在我使用的,因爲這NSTokenField增加了一些UI外觀事物的NSTokenField結束爲了我。但我認爲我提出的額外技巧(見下文)也可能適用於NSTextField。對不起,這是令人費解的。
簡而言之,我所做的是生成一個NSMutableDictionary(一個iVar),其中的鍵是NSTokenField中部分字符串的完整填充,對象是完成字符串表示的自定義對象。換句話說,當我生成自定義完成字符串並將它們放入NSArray以從NSTokenFieldDelegate方法tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:
返回時,我同時將這些完成和它們表示的對象填充到NSMutableDictionary中,並完成鍵和對象作爲值。
當用戶「標記」完成時(通過按下Return或Tab - 我修改了標記化characterSet,所有這些都將標記),調用NSTokenFieldDelegate方法tokenField:representedObjectForEditingString:
。裏面有,我能夠通過使用editingString參數爲重點,以獲得來自的NSMutableDictionary我的對象:[dict objectForKey:editingString]
我認爲有可能用在controlTextDidChange:
NSTextFieldDelegate方法的一些爭論做同樣的事情上落成NSTextField,而不是使用字典技巧的NSTokenField,但爲了達到這個目的,我認爲您必須在NSTextField中完整完成,獲取其字符串值並將其用作關鍵字。就我而言,我不希望在文本字段中完成整個工作,所以NSTokenField的標記化對我更好。
來源
2012-06-29 22:33:04
pjv
這是一個很好的想法,但我不希望向下的箭頭,我正在做一些其他的東西視覺與文本字段,我不知道我是否可以複製與組合框。你知道是否有辦法抑制向下箭頭的顯示,並且當下拉不顯示時讓NSComboBox看起來像純文本字段? – pjv
我不知道。也許你可以重寫drawRect: –
感謝你的想法。我正在考慮獲得我真正想要的外觀,我可能必須在文本字段的底部動態粘貼單列NSTableView。似乎有點混亂,但到目前爲止,我想不出另一種方式來做到這一點。如果完成發射了一個通知,或者告訴NSTextFieldDelegate在發生時選擇了哪個完成,那將會很好。 – pjv