Cocoa validateUserInterfaceItem和菜单项隐藏
使用 validateUserInterfaceItem 可以禁用/启用菜单项,但我需要类似的行为来隐藏菜单项,您有一些提示吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
使用 validateUserInterfaceItem 可以禁用/启用菜单项,但我需要类似的行为来隐藏菜单项,您有一些提示吗?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
文档。
更新:
如果
validateMenuItem:
返回NO
,NSMenus 不会隐藏 NSMenuItems。相应的 NSMenuItem 被禁用(这告诉用户该功能存在,但当前不适用)。Apple 的 HIG。 (请参阅“命名菜单项”部分中的第二段)
关于 NSMenuItem 的
enabled
状态的另外两个注意事项:setEnabled
仅在autoenablesItems:
为托管 NSMenu 设置为 YES- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
Some details in the docs.
Update:
NSMenus do not hide NSMenuItems if
validateMenuItem:
returnsNO
. The according NSMenuItem gets disabled (Which tells the user that the functionality is there, but currently not applicable).This behavior is also suggested in Apple's HIG. (See the second paragraph in the "Naming Menu Items" section)
Two other notes about NSMenuItem's
enabled
state:setEnabled
only works ifautoenablesItems:
of the hosting NSMenu is set toYES
validateMenuItem:
seems to traverse the responder chain to check if the target/action of a NSMenuItem is available.您可以使用 -(BOOL) validateMenuItem: 在不需要时删除菜单项并在需要时插入它。
请参阅菜单文档
You could use -(BOOL) validateMenuItem: to remove a menu item when it was unneeded and insert it when required.
See the Menu documentation