2014-03-19 56 views
4

我正在開發一個自動完成組件,並且我有一個問題需要以簡單的方式解決。UITextField獲取當前編輯的字

我想支持編輯自動完成文本,例如:

blablabl @usertag blablabl 

如果用戶返回並編輯字符串@usertag,我想開始自動完成時,它的編輯。

問題是,如何從textfield獲取當前編輯的單詞。我考慮將光標位置,單獨的nsstring改爲「」(空格),並計算從第一個字到光標位置的字母。

有沒有更簡單的方法來做到這一點?

+0

你能解釋一下嗎?自動完成是否建議@usertag? –

+0

是的,但總的來說,我需要的是在用戶編輯字符串的這一部分時將@usertag移出UITextField –

回答

8

好吧,我找到了一個很容易做到的方法。也許有人會覺得它很有用:

UITextRange* selectedRange = [textField selectedTextRange]; 
NSInteger cursorOffset = [textField offsetFromPosition:0 toPosition:selectedRange.start]; 
NSString* text = textField.text; 
NSString* substring = [text substringToIndex:cursorOffset]; 
NSString* editedWord = [[substring componentsSeparatedByString:@" "] lastObject]; 
0

您是否嘗試過使用UITextFieldDelegate的可用方法?如果在編輯期間訪問單詞是您想要的,您可以簡單地使用-textField:shouldChangeCharactersInRange:replacementString:在此方法中,您可以在輸入字符串時訪問該字符串,並且您還可以在此處爲輸入的每個新字符執行任何字符串操作。

+0

不是真的 - 我想顯示UITableView並允許用戶選擇可用的自動補全項目之一。作爲參考:http://www.appscout.com/images/twitteriphone-auto.jpg –

+0

嗯,你有什麼想法顯示錶格? –

+0

您可以對改變字符時啓動的文本字段(前面​​提到的方法)使用彈出窗口。只有當它不存在時才啓動它,並在輸入字符時對其進行修改。但設計部分取決於你。所有這些都可以通過適當的協議實現完成。 –

相關問題