我想要子類NSTokenField
顯示一個NSPopover
或一個控件獲得焦點後有一些選項的菜單。不幸的是,在幾天的嘗試中,我開始認爲這是不可能的。當NSTokenField成爲第一響應者時,我該如何執行一個動作(顯示彈出框)?
這裏是我到目前爲止已經試過:
- 的
-textDidBeginEditing
和-controlTextDidBeginEditing
是無用的,因爲他們得到所謂的用戶鍵入的第一個字母之後。我需要一些在焦點上被解僱的東西。 - 覆蓋
-becomeFirstResponder
和-resignFirstResponder
來顯示和隱藏菜單或彈出窗口也沒有用。 tokenfield顯然將第一個響應者狀態傳遞給一個私人視圖(NSTokenFieldView
),所以-resignFirsttResponder
在-becomeFirstReponder
之後立即關閉菜單或彈出窗口。 - 我試圖在解僱菜單
-resignFirstResponder
之前查看-currentEditor
的值。當控件處於編輯模式時,-currentEditor
應該不爲零,但不幸的是,只有在調用令牌字段中的-resignFirstResponder
後才設置其值,並且菜單再次立即關閉。 - 我試着子類的
NSTokenFieldCell
並覆蓋其-editWithFrame:
和-selectWithFrame:
方法,但與我的自定義NSTokenFieldCell
的tokenfield完全不顯示,沒有錯誤或異常報告。
有關如何做到這一點的任何想法?有人做過嗎?
您究竟需要如何解散popover?您當然可以在acceptedFirstResponder或BecomeFirstResponder中顯示它,但您如何解除它取決於接下來在工作流程中發生的情況。一旦開始輸入文字,你可以在文本編輯委託方法之一中解僱它。 – rdelmar
是的,它工作得很漂亮!現在我在'-becomeFirstResponder'上顯示彈出窗口,並在'-textDidEndEditing'上關閉它。我不知道爲什麼我沒有想到它。非常感謝。 – Jacopo