Chr*_*men 8 macos cocoa objective-c nsmenu nsmenuitem
我在NSMenu有一个非常奇怪的问题.
我使用的大约一半的NSMenuItem通过NSMenuItem上的setView:方法对它们进行自定义视图.在这个自定义视图中,我实现了mouseUp:当用户点击菜单项时捕获,这在我第一次打开菜单时工作正常.
第二次,如果我在点击时保持鼠标稳定,则不会在任何这些菜单项上调用mouseUp.但是,如果我单击下来,然后稍微移动光标,并释放mouseUp被调用.所以出于某种原因,有些事情正在拦截这些事件,但只有第二次出现菜单,如果光标在mouseDown事件之后移动,它就会通过.(出于某种原因,在菜单的第一次或第二次出现时,mouseDown永远不会被调用).
有人知道这里可能会发生什么吗?什么是拦截我的鼠标事件,为什么它们会在菜单的第一次出现时传递到我的自定义视图,而不是第二次出现?
我有同样的问题。原来问题是我在第一次点击菜单后启动了一个外部应用程序,当再次打开菜单时,它的窗口不再是关键。将此方法添加到我在菜单项中使用的 NSView 子类修复了问题:
- (void)viewWillMoveToWindow:(NSWindow *)newWindow;
{
[super viewWillMoveToWindow:newWindow];
if ( newWindow != nil && ![newWindow isKeyWindow] )
[newWindow becomeKeyWindow];
[self updateTrackingAreas];
}
Run Code Online (Sandbox Code Playgroud)
有关更多上下文,请查看此链接:http : //openradar.appspot.com/7128269
| 归档时间: |
|
| 查看次数: |
677 次 |
| 最近记录: |