6

NSTextField で右クリックするとコンテキスト メニューが表示されます。次のコードを使用して、 NSTextField の rightMouseDown イベントでコンテキスト メニューをポップアップしています。

- (void) rightMouseDown:(NSEvent*)theEvent
{
  NSMenu* theMenu = [[NSMenu alloc] initWithTitle:@"Contextual Menu"];

  [theMenu insertItemWithTitle:@"Suggest Link/Movie" action:@selector(openSuggestionMovieLink) keyEquivalent:@"" atIndex:0];
  [theMenu setDelegate:self];

  [NSMenu popUpContextMenu:theMenu withEvent:theEvent forView:self];
}

ユーザーがウィンドウのどこかをクリックしたときに、このコンテキスト メニューを閉じるのをやめる必要があります。

ウィンドウのマウスダウンイベントをオーバーライドし、コンテキストメニューが開いているときに [super mousedown:event] 呼び出しを送信しないことで、同じことを試みました。これはうまくいきませんでした。

また、NSMenu デリゲート メソッド menuDidClose: を使用して、その中のメニューを再度開いてみました。

- (void)menuDidClose:(NSMenu *)menu
{
   NSLog(@"close");
   [NSMenu popUpContextMenu:menu withEvent:nil forView:self];
}

しかし、何もうまくいきません。

同じことをする方法はありますか。私を正しい方向に向けてください。どんな助けにも感謝します。ありがとう。

4

1 に答える 1