2013-04-10 7 views
0

에서 나는 사용자를 눌러 버튼, 팝업이 표시되면 엑스 코드 툴팁을 enter image description here후킹 이벤트는 NSWindow 표시

을 다음과 같이, NSWindow 표시에 팝업 툴팁을 만들고있어. 쉽습니다.

하지만이 창에서 아무 버튼이나 누르면 팝업이 숨겨져 있어야합니다.

그러나 사용자가 button을 누르면 nswindow의 mousedown :이 호출되지 않습니다. nswindowcontroller는 해당 이벤트를 수신 할 수 없습니다.

nswindow는 어떻게 창 영역에서 모든 이벤트를 감지 할 수 있습니까?

+1

왜 contextMenu를 사용하는 방법에 대해 설명합니다.? –

+0

당신은 + (void) popUpContextMenu : (NSMenu *) 메뉴 withEvent : (NSEvent *) event forView : (NSView *) 뷰 기능을 의미합니까? –

+0

메뉴 항목이지만 상단 팝업 버튼으로 사용하는 방법은 무엇입니까? –

답변

1

작은 창에 대해 contextMenu를 만들 수 있습니다.이 창은 작업시에 열립니다.

* 참고 : 이미지에서, 즉 사용자 지정보기가 아닌 contextMenu를하다 *

- (IBAction)button:(id)sender { 
    NSRect frame = [(NSButton *)sender frame]; 
    NSPoint menuOrigin = [[(NSButton *)sender superview] convertPoint:NSMakePoint(frame.origin.x+80, frame.origin.y+frame.size.height-10) 
                   toView:nil]; 
    NSEvent *event = [NSEvent mouseEventWithType:NSLeftMouseDown 
             location:menuOrigin 
            modifierFlags:NSLeftMouseDownMask // 0x100 
             timestamp:0.0 
            windowNumber:[[(NSButton *)sender window] windowNumber] 
              context:[[(NSButton *)sender window] graphicsContext] 
             eventNumber:0 
             clickCount:1 
             pressure:1]; 
    NSMenu *menu = [[NSMenu alloc] init]; 
    [menu setAutoenablesItems:NO]; 
    [menu insertItemWithTitle:@"Add Favorite" 
         action:@selector(addFavorite:) 
       keyEquivalent:@"" 
         atIndex:0]; 
    [menu insertItem:[NSMenuItem separatorItem] atIndex:1]; 
    [menu insertItemWithTitle:@"Manage Favorite" 
         action:@selector(manageFavorite:) 
       keyEquivalent:@"" 
         atIndex:2]; 
     [NSMenu popUpContextMenu:menu withEvent:event forView:(NSButton *)sender]; 
} 

-(IBAction)addFavorite:(id)sender{ 
    NSLog(@"add"); 
} 

-(IBAction)manageFavorite:(id)sender{ 
    NSLog(@"mangage"); 
} 
+0

감사합니다. 그것은 나에게 좋은 힌트를 준다. –

+0

대환영입니다. **도와 줄 수있어서 기뻐.* –