2010-07-07 78 views
30

我想知道是否有辦法在UITextField中實現特定值的自動完成功能。UITextField自動完成 - iPhone SDK

我知道UITextField可以使用iPhone字典來完成此操作(很像在Safari中搜索google等),但是我希望能夠以編程方式將它指定爲正確的值。

有誰知道有什麼辦法做到這一點?

非常感謝, 佈雷特

+0

你可以看看這個鏈接,以及:HTTP://計算器。 com/questions/14384638/autocomplete-uitextfield/27760471#27760471 – NeverHopeless 2015-01-03 23:41:13

回答

7

退房this tutorial雷Wenderlich這表明,實現自定義自動完成

+1

請注意,只有鏈接的答案是不鼓勵的,所以答案應該是搜索解決方案的終點(而另一箇中途停留的參考文獻往往會得到隨着時間的推移變老)。請考慮在此添加獨立的摘要,並將鏈接保留爲參考。 – 2014-04-30 12:41:43

+0

這不是一個真正的自動完成功能,而是一個搜索教程... – 2014-08-08 10:15:58

+0

本教程適用。只要看看你的'UITextView'與'UITextField'。有一點需要注意的是,出於某種原因,我的一個自動完成選項被某種方式掩蓋了,或者什麼。如果你知道了,讓我知道。 – craned 2015-01-29 21:00:58

1

使用該委託方法的一種方式。您可以替換您指定的值。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text 
     if ([string isEqualToString:@"StackO"]) { 
      [email protected]"StackOverflow"; 
     } 
    return YES; 
} 
12

佈雷特,

我也與此非常相似,而在最近的和相當大的項目上工作的東西。我們有一個不斷變化的汽車完整術語列表,並圍繞它們構建了一個自動完成的列表。

首先,您需要製作某種類型的自動完成控制器。它應該接收一個字符串並返回該字符串的所有可能的自動完成條件。

-(NSArray *)completionsForString:(NSString *)myString; 

然後,檢查出UIMenuController類。這是在許多應用程序中顯示剪切/複製/粘貼選項的類。您可以獲取它的共享實例,自己填充菜單項,並將其顯示在文本字段上方。用戶然後可以簡單地點擊他們想要的術語。

最後,該解決方案非常適合我們的需求。我希望這個對你有用。

6

或者,您也可以使用此UITextField子類(由DOAutocompleteTextField啓發):

https://github.com/hoteltonight/HTAutocompleteTextField

它有一些更多的功能,並正在積極發展。該示例顯示如何使用數組作爲自動建議文本的數據源。它採用與DOAutocompleteTextField相同的方法,因爲它在用戶鍵入的文本字段中顯示「ghosted」建議的完成文本。

1

剛剛面對這個線程,因爲我需要類似的東西。如何實現你自己與UITextfieldDelegate的方法搜索:

- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

正如你可能知道這個方法被調用每一個的UITextField的打字。

2

在前面提到的Ray Wenderlich教程的幫助下,我剛剛實現了一個版本來過濾現有的UITableView中的名稱。

設置我的文本字段的委託作爲我的視圖控制器,我的看法控制器作爲UITextFieldDelegate這兩種方法實現: