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];
}
しかし、何もうまくいきません。
同じことをする方法はありますか。私を正しい方向に向けてください。どんな助けにも感謝します。ありがとう。