'MacOS/objective-c'에 해당되는 글 4건

반응형

1. Capabilities

Maps 부분 On 으로 설정


2. 프로젝트 내 "***.entitlements" 파일 추가

Entitlements File(Dictionary) -> Maps(Boolean)-> YES 추가


3. Build Settings

Code Signing-> Code Signing Entitlements에 위 파일 추가



.h

#import <MapKit/MapKit.h>

@interface ViewController : NSViewController <MKMapViewDelegate>

{

    MKMapView *map

}


.m

//클릭 해서 핀 찍기

    NSClickGestureRecognizer *click = [[NSClickGestureRecognizer alloc] initWithTarget:self action:@selector(foundTap:)];

    click.buttonMask = 2; // right button

    click.numberOfClicksRequired = 1;

    click.delegate = self;

    [map addGestureRecognizer:click];

-(IBAction)foundTap:(NSClickGestureRecognizer *)recognizer

{

    [map removeAnnotations:map.annotations]; //기존 핀 삭제


    CGPoint point = [recognizer locationInView:map];

    CLLocationCoordinate2D tapPoint = [map convertPoint:point toCoordinateFromView:map];

    

    MKPointAnnotation *point1 = [[MKPointAnnotation alloc] init];

    point1.coordinate = tapPoint;

    [map addAnnotation:point1];

}


//줄 긋기

        [map removeOverlays:map.overlays]; //기존 오버레이 삭제


        NSInteger numberOfSteps = locationArr.count; // coordinate 배열

        CLLocationCoordinate2D coordinates[numberOfSteps];

        for (NSInteger index = 0; index < numberOfSteps; index++) {

            

            coordinates[index] = [locationArr objectAtIndex:index];

        }

        

        MKPolyline *polyLine = [MKPolyline polylineWithCoordinates:coordinates count:numberOfSteps];

        [map addOverlay:polyLine];


-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay{

    MKPolylineRenderer *polylineView = [[MKPolylineRenderer alloc] initWithPolyline:overlay];

    polylineView.strokeColor = [NSColor blueColor];

    polylineView.lineWidth = 3.0;

    return polylineView;

}


//지도 위치 지정

[map setRegion:MKCoordinateRegionMakeWithDistance(coordinate, 1024, 1024)];


//맵 타입 변경

[map setMapType:MKMapTypeStandard]; //MKMapTypeHybrid, MKMapTypeSatellite, MKMapTypeSatelliteFlyover, MKMapTypeHybridFlyover

반응형

'MacOS > objective-c' 카테고리의 다른 글

맥 키보드 입력 받기  (0) 2018.12.14
맥 파일 드래그 엔 드롭 뷰 만들기  (0) 2018.12.14
메뉴 바 아이콘 앱  (0) 2018.12.14
블로그 이미지

앱스페이스

,
반응형

.h

NSWindow 상속


.m

- (void)keyDown:(NSEvent *)theEvent

{

    //theEvent.keyCode 로 처리

}

- (BOOL)canBecomeKeyWindow

{

    return YES;

}

반응형

'MacOS > objective-c' 카테고리의 다른 글

osx mkmapview 활용  (0) 2018.12.14
맥 파일 드래그 엔 드롭 뷰 만들기  (0) 2018.12.14
메뉴 바 아이콘 앱  (0) 2018.12.14
블로그 이미지

앱스페이스

,
반응형

.h

NSView 상속


.m

-(id)init

{

    ....

        [self registerForDraggedTypes:@[NSFilenamesPboardType, NSURLPboardType]]; //드레그 타입 지정

    ....

}


//드레그 진입

-(NSDragOperation)draggingEntered:(id<NSDraggingInfo>)sender

{

    NSArray *pastboard = [[sender draggingPasteboard] propertyListForType:@"NSFilenamesPboardType"];

    if (pastboard != nil) {

        NSString * ext = [NSURL fileURLWithPath:[pastboard firstObject]].pathExtension; //파일 타입

        if ([ext isEqualToString:@"파일타입"]) { //원하는 파일 타입이 맞으면 백그라인드 파랗게, 파일 복사

            self.layer.backgroundColor = [NSColor blueColor].CGColor;

            return NSDragOperationCopy;

        }

    }

    return NSDragOperationNone;

}


//드레그후 드롭

-(void)draggingEnded:(id<NSDraggingInfo>)sender

{

    self.layer.backgroundColor = [NSColor whiteColor].CGColor;

}


//드레그 빠져나감

-(void)draggingExited:(id<NSDraggingInfo>)sender

{

    self.layer.backgroundColor = [NSColor whiteColor].CGColor;

}


//드레그엔 드롭 후 실행됨

-(BOOL)performDragOperation:(id<NSDraggingInfo>)sender

{

    NSArray *pastboard = [[sender draggingPasteboard] propertyListForType:@"NSFilenamesPboardType"];

    if (pastboard != nil) {

        NSLog(@"filepath = %@", [pastboard firstObject]);

        // 이곳에서 실제로 처리할 코드 실행

        return YES;

    }

    return NO;

}

반응형

'MacOS > objective-c' 카테고리의 다른 글

osx mkmapview 활용  (0) 2018.12.14
맥 키보드 입력 받기  (0) 2018.12.14
메뉴 바 아이콘 앱  (0) 2018.12.14
블로그 이미지

앱스페이스

,
반응형

.h

{

    NSPopover * popover;

}

@property (strong, nonatomic) NSStatusItem *statusItem;

@property (strong, nonatomic) NSEvent *popoverTransiencyMonitor;


.m

    //팝오버-뷰컨트롤러로 지정

    _statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; //아이템 길이만큼 지정

    [_statusItem setTitle:@"Test"]; //이미지로 지정 가능 - setImage:

    [_statusItem setEnabled:YES];

    [_statusItem setHighlightMode:YES];

    [_statusItem setTarget:self];

    [_statusItem setAction:@selector(togglePopover:)];


    NSStoryboard *st = [NSStoryboard storyboardWithName:@"Main" bundle:nil];

    ViewController * viewController = [st instantiateControllerWithIdentifier:@"ViewController"];

    popover = [NSPopover new];

    popover.contentViewController = viewController;


    // 메뉴 스타일로 지정

    NSMenu *menu = [[NSMenu alloc] init];

    [menu addItemWithTitle:@"Open Feedbin" action:@selector(showPopover:) keyEquivalent:@""];

    [menu addItemWithTitle:@"Refresh" action:@selector(showPopover:) keyEquivalent:@""];

    [menu addItem:[NSMenuItem separatorItem]]; // A thin grey line

    [menu addItemWithTitle:@"Quit Feedbin Notifier" action:@selector(terminate:) keyEquivalent:@""];

    _statusItem.menu = menu;






- (void) showPopover:(id)sender {

    [popover showRelativeToRect:NSZeroRect ofView:(NSView *)sender preferredEdge:NSMinYEdge];

    if(_popoverTransiencyMonitor == nil)

    {

        _popoverTransiencyMonitor = [NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDownMask|NSRightMouseDownMask handler:^(NSEvent* event)

                                    {

                                        [self closePopover:sender];

                                    }];

    }

}

-(void)closePopover:(id)sender {

    if(_popoverTransiencyMonitor)

    {

        [NSEvent removeMonitor:_popoverTransiencyMonitor];

        

        _popoverTransiencyMonitor = nil;

    }

    [popover performClose:sender];

}

-(void)togglePopover:(id)sender {

    if ([popover isShown]) {

        [self closePopover:sender];

    } else {

        [self showPopover:sender];

    }

}






/**popover로 사용할 viewcontoller의 storyboard outlet에 webview 바로 올리면 안나올수도 있음**/

반응형

'MacOS > objective-c' 카테고리의 다른 글

osx mkmapview 활용  (0) 2018.12.14
맥 키보드 입력 받기  (0) 2018.12.14
맥 파일 드래그 엔 드롭 뷰 만들기  (0) 2018.12.14
블로그 이미지

앱스페이스

,