我有一个包含视图 (an NSButton
) 的工具栏项,并且视图的目标设置为nil
,因此它会在触发操作时查找响应者链。不过,我在尝试如何验证第一响应者时遇到了麻烦。
我已经将 NSToolbarItem 子类化并实现了-(void)validate
. 我发现的参考资料说您应该能够通过调用来获得第一个响应者[[[self view] window] firstResponder]
,然后查看响应者链是否实现NSToolbarItemValidation
orNSUserInterfaceValidations
并调用适当的验证方法。
但是,当我调用 时[[self view] window]
,我将nil
作为窗口返回,因此我无法检索到第一响应者。
我不确定它是否有所作为,但我在 XIB 中创建工具栏,而不是用代码编写它。
在 NSToolbar.h 中查看,有一个引用包含窗口的 ivar,所以我可以通过调用找到第一响应者[[[self toolbar] valueForKey:@"window"] firstResponder]
,但这有点 hack,我更喜欢使用有文档/更稳定的东西。