Как включить и отключить autocorrectionType для существующего UITextView
У меня есть UITextView в моем приложении для iPhone, для которого я хочу иметь возможность переключать autocorrectionType.
Когда пользователь редактирует текстовое представление, я хочу, чтобы autocorrectionType был установлен в UIAutocorrectionTypeYes.
Когда текстовое представление не редактируется, я хочу, чтобы параметр autocorrectionType был установлен в UIAutocorrectionTypeNo (потому что я не хочу, чтобы какой-либо из красноцветных подчеркиваний, созданных автокоррекцией, был видимым)
Просто переключите autocorrectionType следующим образом:
myTextView.autocorrectionType = UITextAutocorrectionTypeYes;
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
Кажется, не работает.
Существуют ли ограничения на то, когда я могу переключить autocorrectionType или в каких ситуациях вступает в силу измененный тип autocorrectionType?
EDIT:
Чтобы уточнить:
Нет проблем с настройкой autocorrectionType при инициализации UITextView. Проблема возникает, когда я хочу изменить autocorrectionType для существующего UITextView. В моем случае я хочу дать пользователям преимущество автокоррекции при редактировании UITextView, но не хочу, чтобы какие-либо орфографические ошибки указывались с красными пунктирными подчеркиваниями, когда UITextView не редактируется - отчасти потому, что я также экспортирую UIView, содержащий UITextView как изображение.
Проблема в том, что просто изменение значения моего свойства autocorrectionType моего UITextView не работает.
Ответы
Ответ 1
Вот простой способ сделать это для сценария экспорта изображений:
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView
{
// Turn spell check on
textView.autocorrectionType = UITextAutocorrectionTypeYes;
return YES;
}
- (BOOL)textViewShouldEndEditing:(UITextView *)textView
{
// Turn spell check off and clean up red squiggles.
textView.autocorrectionType = UITextAutocorrectionTypeNo;
NSString *currentText = textView.text;
textView.text = @"";
textView.text = currentText;
return YES;
}
Ответ 2
Сначала вы можете сначала скрыть клавиатуру, а затем снова отобразить ее. Также обновите uitextview. Если [UITextView setNeedsDisplay] не работает для вас, попробуйте [UITextView insertText:], а затем [UITextView deleteBackward]
[textView resignFirstResponde];
textView.autocorrectionType = UITextAutocorrectionTypeNo;
[textView becomeFirstResponder];
[textView setNeedsDisplay];
или
[textView insertText:@" "];
[textView deleteBackward];
Ответ 3
В дополнение к изменению типа автокоррекции в UITextAutoCorrectionNo UITextView должен быть вынужден переоценить его состояние коррекции. setNeedsRedraw недостаточен, но сам по себе настраивает текст, например.
textView.autocorrectionType = UITextAutocorrectionTypeNo;
textView.text = textView.text;
заставляет красные пунктирные линии уходить. ПРИМЕЧАНИЕ. Это обходное решение основывается на недокументированном поведении и не гарантируется работа над будущими выпусками iOS.
Ответ 4
Попробуйте вызвать -setNeedsDisplay
в текстовом представлении после изменения autocorrectionType
. Это заставит текстовое представление перерисовать и, надеюсь, очистит красные подчеркивания.
myTextView.autocorrectionType = UITextAutocorrectionTypeNo;
[myTextView setNeedsDisplay];