NSMenu canelTracking无法在Mac OSx 10.5上运行

时间:2014-07-25 09:45:31

标签: objective-c cocoa osx-leopard nsmenu nscombobox

我在NSMenu中使用NSComboBox来显示项目列表。当我选择NSComboBox菜单中的任何选项时应该被解雇。

要解雇NSMenu我使用了10.6及以上版本的cancelTrackingWithoutAnimation,它运行正常。在10.5的情况下,我使用cancelTracking,但它并没有解雇NSMenu。

1 个答案:

答案 0 :(得分:1)

我通过使用碳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及以上