gpt4 book ai didi

macos - 为什么 NSToolbarItem 自动被禁用?

转载 作者:行者123 更新时间:2023-12-03 16:14:56 26 4
gpt4 key购买 nike

我的 Mac 幻灯片应用程序工具栏中的按钮有点问题。

我希望在没有事件幻灯片时禁用这些按钮,并在有事件幻灯片时启用这些按钮。为了实现这一点,我在开始时将按钮的 isEnabled 属性设置为 false (我已经尝试了 Interface Builder 和窗口的 windowDidLoad ),然后在幻灯片变量的 didSet 中执行以下操作:

var slideshow: Slideshow? {
didSet {
self.playPauseButton.isEnabled = slideshow != nil
}
}

发生的情况是按钮(本例中只有一个)启用大约半秒,然后再次禁用。

我在 didSet 上设置了一个断点,以确认幻灯片在某个时刻未设置为 nil。我也没有修改代码中其他任何地方的 isEnabled 。为了进行测试,我设置了 isEnabled = true 而不是 false 只是为了看看会发生什么,结果发现按钮保持启用状态。

AppKit 的某些部分是否会因我不知道的原因自动禁用按钮?我希望有人有想法。

最佳答案

好的,我成功解决了这个问题。

事实证明,这确实是 NSToolbarItems 验证的问题,如 matt 链接的问题所示。但是,简单地重写 NSWindowController 子类中的函数 validateToolbarItem 并不能完成这项工作,因为不会为包含 View 的 NSToolbarItems 调用该函数 ( see Apple's documentation )。

为了解决这个问题,我必须子类化 NSToolbarItem 并重写其 validate 函数,以在其目标上调用 validateToolbarItem ,如问题 here 的答案中所述。 .

关于macos - 为什么 NSToolbarItem 自动被禁用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com