Это кажется невозможным, но, возможно, у кого-то была такая же проблема.
Могу ли я принять автозаполнение программно или каким-то образом получить предложенное слово, которое всплывает? Моя проблема в том, что я фиксирую нажатие клавиши возврата / возврата, а затем перемещаю фокус в другое текстовое представление. При нажатии Enter / Backspace текстовое окно игнорирует предложенное автоматически слово. Кажется, что можно принять автозаполнение только нажатием пробела / точки (и возврата для новой строки). С помощью этого кода:
- (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;
}
Я попытался программно добавить «пробел» при нажатии клавиши возврата, но это также игнорирует слово с автозаполнением.
else if ([text isEqualToString:@"\n"]){
// Tryin to accept autocomplete with no result.
textview.text = [textview.text stringByAppendingString:@" "];
// RETURN KEYSTROKE
[delegate doSomethingWhenReturn];
return NO;
}
Есть предложения?