绑定 NSMenuItem 的标题会破坏启用/禁用验证

发布于 2024-09-11 10:39:05 字数 181 浏览 3 评论 0原文

我有一个菜单,其中一些菜单项使用绑定来获取其标题。这些项目始终处于启用状态,并且不会像应有的那样自动启用/禁用,也不会导致对 validateUserInterfaceItem: 的调用。如果您删除标题上的绑定,那么它会再次开始工作。菜单项的目标设置为零(第一响应者)。如果您单击其中一个,它会执行选择器(操作)。

漏洞?该怎么办?

I have a menu where some of the menu items use bindings to get their title. These items are always enabled, and don't neither automatically enable/disable like they should NOR do they cause a call to validateUserInterfaceItem:. If you remove the binding on title, then that starts working again. The menu items have the target set to nil (First Responder). If you click on one, it does execute the selector (action).

Bug? What to do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

妞丶爷亲个 2024-09-18 10:39:05

由于某种原因,当您使用绑定设置菜单项的标题时,该菜单项将被启用
即使目标/操作是nil

如果您想永久禁用菜单项,可以通过将菜单项的 enabled 状态绑定到常量 NO 来解决此问题:

NSNumber *alwaysNo = [NSNumber numberWithBool:NO];
[menuItem bind:@"enabled" toObject:alwaysNo withKeyPath:@"boolValue" options:nil];

请注意,这不是最优雅的解决方法,但就我而言,它仍然比不使用标题绑定更干净。

For some reason when you set a menu item's title with bindings, the menu item becomes enabled
even if the target/action are nil.

If you want to permanently disable the menu item you can workaround this by binding the menu item's enabled status to a constant NO:

NSNumber *alwaysNo = [NSNumber numberWithBool:NO];
[menuItem bind:@"enabled" toObject:alwaysNo withKeyPath:@"boolValue" options:nil];

Note that this isn't the most elegant workaround, but in my case it was still cleaner than not using bindings for the title.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文