gpt4 book ai didi

objective-c - NSMenuItem、自定义 View 和 mouseUp 的奇怪问题 :

转载 作者:太空狗 更新时间:2023-10-30 03:33:24 27 4
gpt4 key购买 nike

我在使用 NSMenu 时遇到了一个非常非常奇怪的问题。

我使用的 NSMenuItem 中有大约一半通过 NSMenuItem 上的 setView: 方法自定义 View 。在这个自定义 View 中,我实现了 mouseUp: 以在用户单击菜单项时进行捕获,这在我第一次打开菜单时非常有效。

第二次,如果我在单击时保持鼠标稳定,则不会在任何这些菜单项上调用 mouseUp。但是,如果我向下单击,然后稍微移动光标,然后释放 mouseUp 就会被调用。所以出于某种原因,某些东西正在拦截这些事件,但只是第二次出现菜单,如果光标在 mouseDown 事件之后移动,它就会通过。 (由于某些原因,mouseDown 从未在菜单的第一次或第二次出现时被调用)。

有人知道这里可能发生了什么吗?什么在拦截我的鼠标事件,为什么它们在菜单第一次出现时传递到我的自定义 View ,但在第二次出现时却没有传递到我的自定义 View ?

最佳答案

我遇到了同样的问题。原来问题是我在第一次点击菜单后启动了一个外部应用程序,当菜单再次打开时,它的窗口不再是关键。将此方法添加到我在菜单项中使用的 NSView 子类解决了这个问题:

- (void)viewWillMoveToWindow:(NSWindow *)newWindow;
{
[super viewWillMoveToWindow:newWindow];

if ( newWindow != nil && ![newWindow isKeyWindow] )
[newWindow becomeKeyWindow];

[self updateTrackingAreas];
}

有关更多上下文,请查看此链接:http://openradar.appspot.com/7128269

关于objective-c - NSMenuItem、自定义 View 和 mouseUp 的奇怪问题 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15075033/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com