2017-04-20 7 views
0

나는 NSTableView이며 각 행에는 버튼이 있습니다. 테이블과 관련된 메뉴도 있습니다.NSButton의 NSEvent

문제는 다음과 같습니다. 버튼 클릭시 메뉴를 표시하고 싶습니다. 가능한 경우 마우스 오른쪽 버튼으로 클릭하지 마십시오.

조치 방법은 다음과 같습니다

여기
- (IBAction)showMenu:(NSButton *)button { 
    NSLog(@"show menu"); 
    NSMenu *menu = [self.tableView menu]; 
    NSEvent *event = [[NSEvent alloc] init]; 


    [NSMenu popUpContextMenu:menu 
        withEvent:event 
        forView:button]; 

} 

event으로 무엇을? nil을 사용하면 버튼 옆에있는 것이 아니라 왼쪽 하단 모서리에 메뉴가 표시됩니다.

모든 안내를 받으실 수 있습니다.

+0

현재 이벤트를 얻을 수 있습니다 :'[NSApp currentEvent]'. 풀다운 모드에서'NSPopupButton'을 사용해보십시오. – Willeke

답변

0

-[NSMenu popUpMenuPositioningItem:atLocation:inView:]을 사용해보세요. 이 메서드는 NSEvent 인수를 사용하지 않습니다. 대신보기의 좌표계에서보기와 위치를 지정하고 메뉴는 그 위치에 자신 (또는 항목 중 하나)을 배치합니다.

그러나 나는 NSButton을 전혀 사용하지 말 것을 제안합니다. 대신 NSPopUpButton을 사용하면 왼쪽 클릭시 올바른 위치에 메뉴가 표시됩니다.

+0

감사합니다 롭, 내 요구 사항 NSButton (UI) 디자인을 사용할 수 있습니다. 그러나 나는 당신이 언급 한 것과 매우 흡사합니다. '- (IBAction) showMenu : (NSButton *) 버튼 { NSMenu * menu = self.tableView.menu; NSPoint point = NSMakePoint (-menu.size.width, 0); [menu popUpMenuPositioningItem : [menu itemAtIndex : 0] at 위치 : 점 inView : button]; }' –