1
在我的应用程序中,我有三个NSImageView
。当用户右键单击imageview时,我正在显示一个NSMenu
其中两个NSMenuItem
s“添加照片”,“删除照片”。由于我有三个ImageView我需要知道哪个imageview显示菜单。所以我可以只为那个imageview做我的东西。找到显示在右键点击的NSMenu位置
那么我该如何做到这一点?我无法在窗口中找到NSMenu的位置。
在我的应用程序中,我有三个NSImageView
。当用户右键单击imageview时,我正在显示一个NSMenu
其中两个NSMenuItem
s“添加照片”,“删除照片”。由于我有三个ImageView我需要知道哪个imageview显示菜单。所以我可以只为那个imageview做我的东西。找到显示在右键点击的NSMenu位置
那么我该如何做到这一点?我无法在窗口中找到NSMenu的位置。
如果您知道当您的应用程序中出现上下文(右键单击)菜单,那么您应该能够获取发生的原始“NSEvent
”数据。要检测它发生的情况,您有几个选项(like overriding "rightMouseDown:
" in your "NSWindow
" subclass)。
在该“NSEvent
”中,您可以获取locationInWindow
(我已经为您链接了Apple文档)。通过这些信息,您可以检查鼠标是否落在三个图像视图框架的边界内。
然后你就会知道要添加或删除哪张照片。
我已将菜单与xib中的图像连接在一起。所以当我右键点击imageview时,rightMouseUp函数不会被调用。它只是显示菜单。在imageview框架以外的区域中,rightMouseUp函数被调用。 –
你也可以继承你的“NSImageView'”并覆盖'menuForEvent'(我链接的答案中的另一种可能性)。如果您可以在图像视图中执行此操作,那么您将知道(例如,从标题或其他属性)哪个图像视图发生了菜单事件。 –
如果这是不可能的,那么我会通过编程的方式在rightMouseUp事件而不是xib中显示菜单。我认为它比继承ImageView更好。 –