我在跟踪区域内有一个 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/