objective-c - NSMenu canelTracking 不适用于 Mac OSx 10.5

标签 objective-c cocoa osx-leopard nsmenu nscombobox

我在 NSMenu 中使用 NSComboBox 来显示项目列表。当我在 NSComboBox 菜单中选择任何选项时,应该会被忽略。

要关闭 NSMenu,我正在使用 10.6 及更高版本的 cancelTrackingWithoutAnimation,效果很好。在 10.5 的情况下,我使用 cancelTracking 但它并没有取消 NSMenu。

最佳答案

我通过使用 Carbon API CancelMenuTracking() 解决了该问题,

CancelMenuTracking(
  MenuRef   inRootMenu,
  Boolean   inImmediate,
  UInt32    inDismissalReason)  

使用_NSGetCarbonMenu获取NSMenu的menuref。

menuRef = _NSGetCarbonMenu(myMenu);

CancelMenuTracking(menuRef,YES,kHIMenuDismissedByCancelMenuTracking); 对于 10.5 和 CancelMenuTracking(menuRef,YES,0); 对于 10.6 及以上

关于objective-c - NSMenu canelTracking 不适用于 Mac OSx 10.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24952743/

相关文章:

ios - Firebase signInWithEmail 函数是否在主线程中运行?

objective-c - 为什么我们在iOS测试时指定 "weak"?

mysql - 在 Mac OS X 10.5 上,mysql 数据库文件位于何处

cocoa - 如何在 Cocoa 中使用函数后声明该函数?

mysql - 在具有最新版本的 Mac OS X 上安装旧版本的 MySQL 5.5

cocoa - OSX Cocoa 应用程序的空白进程名称?

iPhone - 核心数据 boolean 值?

iphone - 使用适用于 iOS 的 OpenGL ES 绘制正方形

objective-c - 检测鼠标右键单击 cocoa

objective-c - localizedCaseInsensitiveCompare 似乎不适用于瑞典语字符