我有一個工具欄項目包含一個視圖(NSButton
)和視圖的目標設置爲nil
,所以它會在觸發動作時查找響應者鏈。不過,我在嘗試如何驗證第一響應者時遇到了問題。驗證NSToolbarItem與查看FirstResponder
我已經子類NSToolbarItem和實施-(void)validate
。我發現的參考文獻指出,您應該能夠通過調用[[[self view] window] firstResponder]
獲得第一響應者,然後查看響應者鏈是否執行NSToolbarItemValidation
或NSUserInterfaceValidations
並調用適當的驗證方法。
但是,當我撥打[[self view] window]
時,我回到nil
作爲窗口,所以我無法檢索到第一個響應者。
我不確定它是否有所作爲,但我在XIB中創建工具欄而不是將其寫入代碼中。
在NSToolbar.h中,有一個引用了包含窗口的ivar,所以我可以通過調用[[[self toolbar] valueForKey:@"window"] firstResponder]
找到第一個響應者,但這有點破解,我寧願使用記錄/穩定的東西。
對於包含視圖的NSToolbarItem實例,您需要繼承並提供-validate的實現。我試圖找出當目標是第一響應者時(如'nil')如何編寫該方法。 http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/Toolbars/Tasks/ValidatingTBItems.html#//apple_ref/doc/uid/20000753-BAJGFHDD – Jablair 2010-07-22 16:24:12