Переключение UITextAutoCorrectionType КОГДА UITextField редактируется - PullRequest
2 голосов
/ 05 мая 2010

Я хочу включить / выключить автокоррекцию на основе содержимого в текстовом поле.

Например, если пользователь печатает фразу типа «Станки», я хочу, чтобы автокоррекция была включена (для остальных слов, которые она собирается набирать), но если я чувствую начала, скажем, веб-адреса как "www.mach .." Я хочу отключить автокоррекцию.

Я попытался сделать это при получении UITextFieldTextDidChangeNotification, переключив autoCorrectionType в текстовом поле на основе введенного содержимого. Хотя фактическое значение этого свойства в текстовом поле изменяется (проверено с помощью NSLog), на фактическое поведение коррекции это не влияет. Таким образом, если автокоррекция была включена в начале сеанса редактирования, она будет продолжаться, даже после того, как я установил для текстового поля значение UITextAutoCorrectionTypeNo. Так что «www.foogle ...» исправляется на «www.google ..», что не всегда желательно в моей книге.

Так кто-нибудь нашел способ включить / отключить автокоррекцию на лету (при редактировании) в текстовом поле?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 13 июля 2010

UITextView должен перезагрузить что-то внутреннее, что не происходит автоматически, поэтому мы должны вызвать это снаружи. Я нашел способ уйти в отставку и снова стать первым респондентом:

[textView resignFirstResponder];
// UITextAutoCorrectionType change
[textView becomeFirstResponder];

Это работает. Не забудьте восстановить выбранный диапазон.

Raphael

2 голосов
/ 11 мая 2011

Мне удалось запустить [textField reloadInputViews] после установки типа автокоррекции.

Имейте в виду, что это сбрасывает состояние клавиатуры. Если вы просматривали символы (вместо букв), после вызова reloadInputViews клавиатура будет сброшена на буквы.

...