2009-09-16 18 views
0

我正在開發一個具有文本框的應用程序。所以當我輸入文本時,它應該搜索數據庫,並給我建議就像谷歌搜索。就像我輸入字母'a'一樣,它應該有一個類似於文本字段下面的東西,所有名稱都以字母'a'開頭。那麼如果我輸入了字母'b',它應該調整框的大小,並給出以'ab'開頭的名字,等等。可可+我應該使用什麼ui元素?

我打算在文本字段下方使用表格視圖,該文字字段會在文本字段中輸入新內容時重新加載。但我不知道如何調整表視圖的大小取決於建議的數量。那麼是否還有其他適合這種情況的UI元素?

另外我如何檢測一個新的字母或數字輸入到文本字段,以便我可以過濾出的建議像有沒有這樣的通知?我的意思是說,我輸入字母'a',所以現在文本字段的字符串值是'a',現在我輸入'b'。所以現在字符串值改爲'ab'。我如何檢測這個?我認爲textDidChange通知會爲我做這個。

謝謝

回答

1

您可以使用NSComboBox自動完成像你所描述的列表。 NSComboBox是NSControl的子類,因此您可以使用-controlTextDidChange:delegate方法來檢測用戶輸入的文本中的更改。確保在Interface Builder中將控件設置爲「連續」或調用[comboBox setContinuous:YES]。

+0

謝謝Rob。有沒有什麼方法可以隱藏按鈕? 我只想在最後沒有按鈕的文本字段。 – King 2009-09-17 01:06:51

0

如果出於某種原因發現組合框不適合您的情況,則可以將完成列表作爲控件窗口的子窗口實現,並具有無標題的表格視圖。然後,您可以編程方式調整該窗口的大小,因爲可能的完成次數發生了變化。

+0

謝謝彼得。這聽起來更像我想要的。請你可以向我解釋如何創建一個子窗口並顯示在確切的位置(即在文本域的下面)以及如何根據單元格數量來調整大小。 – King 2009-09-17 01:10:50

+1

要獲取正確的位置,請獲取視圖的框架,將其起點轉換爲內容視圖的座標空間,然後將其轉換爲屏幕空間。這將是您的子窗口框架的左上角。然後,創建一個窗口並將其添加爲視圖窗口的子窗口。 – 2009-09-17 02:00:12

相關問題