2010-08-19 109 views

回答

2

你將不得不自己動手編程。如果要實現UITextViewDelegate協議,功能

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *) 

被稱爲每用戶輸入的時間/刪除文本視圖的字符。因此,例如,如果用戶輸入一個字符的',然後在這個函數中,你會檢查數組w你想自動完成的話,看看它是否應該自動完成。

條件 -

•如果只有一個以 'S',自動完成啓動值。

•如果沒有以「S」,或者有以「S」啓動多個值,(否則)不自動完成啓動值。

我建議你自動完成字符串數組按字母順序排序,和你保持指向您在陣列中離開,其中一個全局變量。例如,如果用戶輸入「S」,並與第一個字「S」是在數組索引5,那麼當用戶輸入另一個字符,「U」使搜索字符串「蘇」,你應該能記得從數組索引5開始查找自動完成字符串的速度更快(而不是遍歷無用的數據)。我會爲此使用一個C數組,儘管NSArray可以工作。

+0

2個問題,會和一個UITextView該方法的工作(在我的問題提到的),以及如何將我實際上做autcompletion。謝謝! – Joshua 2010-08-19 16:23:11

+0

我更新了我的答案。就自動完成而言,它更難以使用uitextview。你必須找到在文本視圖中輸入的最後一個字符,並查看它們是否可以通過使用上面列出的條件將它們檢查到字符串數組中的每個項目來自動完成。正如我所提到的,如果不每次遍歷列表,都可以優化代碼以加快運行速度。如果您發現可以自動完成,則只需替換使用自動完成字符串輸入的子字符串即可。 – jmont 2010-08-19 16:38:47

+0

對,我明白了。你會建議我在通過數組遍歷時使用'NSString'的'characterAtIndex:'方法檢查條件嗎? – Joshua 2010-08-19 17:01:13