objective-c - TrackingArea 中的 NSPopUpButton -> 从菜单中选择项目时鼠标退出

标签 objective-c cocoa macos

我在跟踪区域内有一个 NSPopUpButton 。现在,当我打开 PopUp 并选择一个项目时,将调用 mouseExited: 方法。即使我的鼠标仍在跟踪区域内。我认为这是因为 NSMenu 本身就是一个 View ,当我单击鼠标时,它不再位于具有跟踪矩形的 View 中。

如何解决这个问题?有没有办法在所有 View 之上设置跟踪区域?

我使用的跟踪区域:

NSUInteger options = NSTrackingMouseEnteredAndExited | NSTrackingActiveInKeyWindow;
NSTrackingArea* trackingArea = [[NSTrackingArea alloc] initWithRect:rect options:options owner:self userInfo:nil];

最佳答案

尝试使用 NSTrackingActiveInActiveApp 而不是 NSTrackingActiveInKeyWindow。我对此不太确定,但当菜单开始跟踪时,窗口可能会放弃关键状态(但不是主要状态,这就是它的外观不会改变的原因),以便用户可以使用键盘。 (您可以通过成为窗口的委托(delegate)并响应几个委托(delegate)消息来检查这一点。)

当然,这确实意味着您必须在处理用户的鼠标移动之前检查窗口是否为主窗口。

关于objective-c - TrackingArea 中的 NSPopUpButton -> 从菜单中选择项目时鼠标退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2005576/

相关文章:

c++ - Xcode LLVM 5.0 错误 -Wunused-command-line-argument-hard-error-in-future

objective-c - 拖放——只接受文件夹

ios - 您的二进制文件未针对 iPhone 5 xcassets 进行优化

html - 无法在 IOS 9 的 UIWebView 中选择下拉菜单

objective-c - 在 NSCollectionView 中右键单击获取 NSArrayController 项目

objective-c - NSWindow 调整大小

macos - MacOS X 上的 Erlang 和 Yaws 设置

java - 在 OS X 上设置默认 JRE

iphone - 如何访问 UITableView subview 选择?

objective-c - 如何抑制 Xcode 上的 "dead store"编译器警告?