【发布时间】:2010-07-16 17:13:15
【问题描述】:
我有一个包含视图(NSButton)的工具栏项,并且视图的目标设置为nil,因此它会在触发操作时查找响应者链。不过,我在尝试如何验证第一响应者时遇到了麻烦。
我继承了 NSToolbarItem 并实现了-(void)validate。我发现的参考资料表明,您应该能够通过调用[[[self view] window] firstResponder] 获得第一响应者,然后查看响应者链是否实现NSToolbarItemValidation 或NSUserInterfaceValidations 并调用适当的验证方法。
但是,当我调用[[self view] window] 时,我将nil 作为窗口返回,因此我无法检索到第一响应者。
我不确定它是否会有所不同,但我是在 XIB 中创建工具栏,而不是用代码编写它。
在 NSToolbar.h 中,有一个 ivar 引用了包含窗口,所以我可以通过调用 [[[self toolbar] valueForKey:@"window"] firstResponder] 找到第一响应者,但这有点不合时宜,我更喜欢使用记录/更稳定的东西。
【问题讨论】:
标签: objective-c cocoa macos nstoolbaritem