这似乎不可能,但也许其他人也有同样的问题。
我是否可以通过编程方式接受自动填充,或以某种方式获取弹出的建议字词?我的问题是我正在捕获返回/退格键击,然后将焦点移动到另一个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;
}
我尝试以编程方式在返回键时添加“space”,但也忽略了自动完成的单词。
else if ([text isEqualToString:@"\n"]){
// Tryin to accept autocomplete with no result.
textview.text = [textview.text stringByAppendingString:@" "];
// RETURN KEYSTROKE
[delegate doSomethingWhenReturn];
return NO;
}
有什么建议吗?
答案 0 :(得分:4)
在需要接受自动填充结果的文本视图或文本字段上调用-resignFirstResponder
(即[textView resignFirstResponder]
):UIKit将更改.text
属性以包含自动更正的文本。
如果您想在第一个视图撤消第一个响应者后保持键盘,请将firstResponder
责任传递到[anotherTextView becomeFirstResponder]
的下一个文本输入视图。
答案 1 :(得分:0)
对于退格和空格,您可以使用此条件
if ([[text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0)
{
[delegate doSomethingWhenBackspace];
return NO;
}
答案 2 :(得分:-2)
我希望此链接对您有用。
答案 3 :(得分:-3)
我遇到了一个非常类似的问题,我正在创建一个必须阅读文本视图中每个字母的应用程序,并且在自动填充插入单词时出现问题,因为它将其保存为一个字母。 您可以将每个字符添加到数组中,然后检查是否有超过1个字符串的长度。或者您可以将放入数组中的每个字符添加到
中NSString *string = text;
NSMutableArray *array = [NSMutableArray new];
for (int i=0; i<string.length; i++) {
[array addObject:[string substringWithRange:NSMakeRange(i, 1)]];
}
单独添加每个字符,通过比较两个数组,您可以确定是否已使用自动更正以及使用哪个单词。 希望这会有所帮助。