确认UITextview自动完成

f0r*_*0rz 8 iphone uitextview uitextviewdelegate ios

这似乎不可能,但也许其他人也有同样的问题.

我是否可以通过编程方式接受自动填充,或以某种方式获取弹出的建议单词?我的问题是我正在捕获返回/退格键击,然后将焦点移动到另一个textview.当输入/退格时,textview将忽略自动建议的单词.似乎只能通过命中空格/点(并返回新行)来接受自动完成.使用此代码:

 - (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
                                replacementText:(NSString *)text {
    NSRange textViewRange = [textView selectedRange];

    // Handle newrow and backspace.  
    if(([text length] == 0) && (textViewRange.location== 0) && textViewRange.length==0){
        // BACKSPACE KEYSTROKE
        [delegate doSomethingWhenBackspace];
        return NO;      
    }else if ([text isEqualToString:@"\n"]){    
        // RETURN KEYSTROKE
        [delegate doSomethingWhenReturn];       
        return NO;      
    }

    return YES;
}
Run Code Online (Sandbox Code Playgroud)

我尝试以编程方式在返回键时添加"space",但也忽略了自动完成的单词.

else if ([text isEqualToString:@"\n"]){ 
                // Tryin to accept autocomplete with no result. 
                textview.text = [textview.text stringByAppendingString:@" "];
            // RETURN KEYSTROKE
            [delegate doSomethingWhenReturn];       
            return NO;      
        }
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Jor*_*dan -4

我遇到了一个非常类似的问题,我正在制作一个应用程序,必须读取文本视图中的每个字母,并且在自动完成插入单词时遇到问题,因为它会将其保存为一个字母。您可以将每个字符添加到数组中,然后检查是否有字符长度超过 1 个字符串。或者您可以添加放入数组中的每个字符,然后运行类似的命令

NSString *string = text;
NSMutableArray *array = [NSMutableArray new];
for (int i=0; i<string.length; i++) {
 [array addObject:[string substringWithRange:NSMakeRange(i, 1)]];
}
Run Code Online (Sandbox Code Playgroud)

要单独添加每个字符,通过比较两个数组,您可以确定是否使用了自动更正以及使用了哪些单词。希望这会有所帮助。