Neh*_*eha 6 macos cocoa contextmenu objective-c
我在我的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];
}
Run Code Online (Sandbox Code Playgroud)
当用户单击窗口中的任意位置时,我需要停止关闭此上下文菜单。
我尝试通过覆盖窗口的mouse down事件并在上下文菜单打开时不发送[super mousedown:event]调用来完成此操作。这没有用。
我也尝试使用NSMenu委托方法menuDidClose:并再次打开其中的菜单。
- (void)menuDidClose:(NSMenu *)menu
{
NSLog(@"close");
[NSMenu popUpContextMenu:menu withEvent:nil forView:self];
}
Run Code Online (Sandbox Code Playgroud)
但是没有任何东西对我有用。
有什么办法可以做到这一点。请指出正确的方向。我将不胜感激。谢谢。
您是否尝试过对 NSMenu 进行子类化并覆盖
- (void)cancelTracking;
- (void)cancelTrackingWithoutAnimation;
Run Code Online (Sandbox Code Playgroud)
修改以适应您的自定义行为?会发生什么?
| 归档时间: |
|
| 查看次数: |
1175 次 |
| 最近记录: |