Отключить предложения ярлыков клавиатуры UITextField
Есть ли простой способ удалить подсказки клавиатуры из UITextField
?
Можно удалить коррекцию текста с помощью [textField setAutocorrectionType:UITextAutocorrectionTypeNo];
, однако это не влияет на ярлыки.
Влияет на sharedMenuController и не сквозит это.
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
[UIMenuController sharedMenuController].menuVisible = NO;
return NO;
}
![enter image description here]()
Ответы
Ответ 1
Решил это, внедрив метод UITextFieldDelegate
и вручную установив свойство текста UITextField.
По умолчанию в симуляторе вы можете проверить это поведение, набрав "omw", который должен предлагать "На моем пути!". Следующий код блокирует это. Примечание. Это также отключает автоматическую коррекцию и проверяет правописание, что было в моем случае.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// Pass through backspace and character input
if (range.length > 0 && [string isEqualToString:@""]) {
textField.text = [textField.text substringToIndex:textField.text.length-1];
} else {
textField.text = [textField.text stringByAppendingString:string];
}
// Return NO to override default UITextField behaviors
return NO;
}
Ответ 2
Objective-C
textField.autocorrectionType = UITextAutocorrectionTypeNo;
Swift
textField.autocorrectionType = .no
Документация https://developer.apple.com/library/ios/documentation/uikit/reference/UITextInputTraits_Protocol/Reference/UITextInputTraits.html
Ответ 3
Используйте это только
textField.autocorrectionType = UITextAutocorrectionTypeNo;
Ответ 4
textField.autocorrectionType = .No
Ответ 5
Swift 3.x или выше:
textField.autocorrectionType = .no
Ответ 6
UITextField* f = [[UITextField alloc] init];
f.autocorrectionType = UITextAutocorrectionTypeNo;
Ответ 7
Вышеупомянутый ответ может не работать с ситуацией cut/copy/paste. Например, при разрезании и вставке текста в UITextField результат не соответствует функциональности по умолчанию.
Ниже приведен аналогичный подход:
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *textFieldNewText = [textField.text stringByReplacingCharactersInRange:range withString:string];
if ([string isEqualToString:@""]) {
// return when something is being cut
return YES;
}
else
{
//set text field text
textField.text=textFieldNewText;
range.location=range.location+[string length];
range.length=0;
[self selectTextInTextField:textField range:range];
}
return NO;
}
//for handling cursor position when setting textfield text through code
- (void)selectTextInTextField:(UITextField *)textField range:(NSRange)range {
UITextPosition *from = [textField positionFromPosition:[textField beginningOfDocument] offset:range.location];
UITextPosition *to = [textField positionFromPosition:from offset:range.length];
[textField setSelectedTextRange:[textField textRangeFromPosition:from toPosition:to]];
}
Ответ 8
Использовать AutocorrectionType:
[mailTextField setAutocorrectionType: UITextAutocorrectionTypeNo];