Iphone UITextView自定义自动完成

Iphone UITextView自定义自动完成,iphone,objective-c,cocoa-touch,uitextview,Iphone,Objective C,Cocoa Touch,Uitextview,有没有一种方法可以实现UITextView的自定义自动完成,比如给它一个NSDictionary或NSArray字符串来注意它?你必须自己编程。如果实现UITextViewDelegate协议,则函数 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *) 每次用户在文本视图中输入/删除字符时调用。例如,如果用户输入了一个字符“s”,

有没有一种方法可以实现UITextView的自定义自动完成,比如给它一个
NSDictionary
NSArray
字符串来注意它?

你必须自己编程。如果实现UITextViewDelegate协议,则函数

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *) 
每次用户在文本视图中输入/删除字符时调用。例如,如果用户输入了一个字符“s”,那么在这个函数中,您将检查数组w您想要自动完成的单词,看看它是否应该自动完成

条件-

•如果只有一个以“s”开头的值,则自动完成

•如果没有以“s”开头的值,或者如果有多个以“s”开头的值,(否则)不自动完成


我建议您的自动完成字符串数组按字母顺序排序,并保留一个全局变量,该变量指向您在数组中中断的位置。例如,如果用户输入's',并且第一个带's'的单词在数组索引5中,那么当用户输入另一个字符'u'使搜索字符串“su”时,您应该能够记住从数组索引5开始,以更快地查找自动完成字符串(而不是迭代无用的数据)。尽管NSArray可以工作,但我会使用C数组。

2个问题,该方法是否可以与UITextView(如我的问题中所述)一起工作,以及我实际如何完成该任务。谢谢我更新了我的答案。就自动完成而言,uitextview更难实现。您必须找到在文本视图中输入的最后一个字符,并查看是否可以通过使用我上面概述的条件将它们检查到字符串数组中的每个项目来自动完成这些字符。正如我提到的,如果不让代码每次遍历列表,您可以优化代码以加快运行速度。如果您发现可以自动完成,只需将输入的子字符串替换为自动完成的字符串。对,我明白了。您建议我在遍历数组时使用
NSString
characterAtIndex:
方法检查条件吗?是的,这是个好主意。您还可以使用其他方法(rangeOfString:),但它们可能太复杂了,不适合这样做?无论如何,请记住这些函数是区分大小写的(“C”!=“C”),因此您可能需要处理这个问题。