我在 NSMenu 中使用 NSComboBox 来显示项目列表。当我在 NSComboBox 菜单中选择任何选项时,应该会被忽略。
为了解除 NSMenu,我在 10.6 及更高版本中使用了 cancelTrackingWithoutAnimation,它工作正常。在 10.5 的情况下,我正在使用 cancelTracking,但它不会关闭 NSMenu。
我在 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 及以上