【问题标题】:Validating NSToolbarItem with View against FirstResponder针对 FirstResponder 使用 View 验证 NSToolbarItem
【发布时间】:2010-07-16 17:13:15
【问题描述】:

我有一个包含视图(NSButton)的工具栏项,并且视图的目标设置为nil,因此它会在触发操作时查找响应者链。不过,我在尝试如何验证第一响应者时遇到了麻烦。

我继承了 NSToolbarItem 并实现了-(void)validate。我发现的参考资料表明,您应该能够通过调用[[[self view] window] firstResponder] 获得第一响应者,然后查看响应者链是否实现NSToolbarItemValidationNSUserInterfaceValidations 并调用适当的验证方法。

但是,当我调用[[self view] window] 时,我将nil 作为窗口返回,因此我无法检索到第一响应者。

我不确定它是否会有所不同,但我是在 XIB 中创建工具栏,而不是用代码编写它。

在 NSToolbar.h 中,有一个 ivar 引用了包含窗口,所以我可以通过调用 [[[self toolbar] valueForKey:@"window"] firstResponder] 找到第一响应者,但这有点不合时宜,我更喜欢使用记录/更稳定的东西。

【问题讨论】:

    标签: objective-c cocoa macos nstoolbaritem


    【解决方案1】:

    您无需手动验证。应用程序在响应者链中的每个对象上调用 -validate(或其适当的变体),针对需要验证的每个菜单项或工具栏项,直到找到返回 YES 的项(意味着它支持每个菜单或工具栏项的操作),或者找不到。如果找到,则您的工具栏项或菜单项已启用。如果没有,它被禁用。至少,这是一般理论。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 2021-09-27
    • 2014-07-13
    相关资源
    最近更新 更多