【发布时间】:2013-02-11 01:44:36
【问题描述】:
我在这里遇到了一个非常奇怪的 NSMenu 问题。
我使用的大约一半 NSMenuItems 通过 NSMenuItem 上的 setView: 方法对它们有自定义视图。在这个自定义视图中,我实现了 mouseUp: 来捕捉用户单击菜单项的时间,这在我第一次打开菜单时效果很好。
但第二次,如果我在单击时保持鼠标稳定,则不会在任何这些菜单项上调用 mouseUp。但是,如果我向下单击,然后稍微移动光标,然后释放 mouseUp 就会被调用。所以由于某种原因,有些东西正在拦截这些事件,但只有第二次出现菜单时,如果光标在 mouseDown 事件之后移动,它就会通过。 (由于某种原因,mouseDown 永远不会在菜单的第一次或第二次出现时被调用)。
有人知道这里可能发生了什么吗?是什么拦截了我的鼠标事件,为什么它们会在菜单第一次出现时传递给我的自定义视图,而在第二次出现时却没有?
【问题讨论】:
-
如果我在第二次出现的菜单上双击(mouseUp 然后被调用两次)也会通过。
-
所以我必须在这个视图之上使用 NSTextViews。那些正在变得mouseDown,但他们也开始与他们的superview同时失败。几乎就像在 NSMenu 之上有东西拦截了鼠标事件。
标签: objective-c macos cocoa nsmenuitem nsmenu