Капитализация UITextField - PullRequest
       2

Капитализация UITextField

21 голосов
/ 15 января 2012

Откройте приложение Календарь Apple. Когда вы называете новую встречу, она автоматически заглавной буквы. Для этого не используется свопинг в стиле «коррекция».

За свою жизнь я не могу воспроизвести это поведение. В IB я установил для UITextField Capitalization значение Word, но, похоже, это никак не влияет. Если я включу исправление, оно заменит слово заглавной версией, но это не совсем верно.

Нужно ли обрабатывать это в коде, проверяя каждое нажатие клавиши? Это, вероятно, тривиально, за исключением того, что я беспокоюсь обо всех угловых случаях, которые я пропущу, например, когда пользователь вручную использует «shift» для отмены заглавных букв, или удаляет и повторно вводит ключи, в этом случае он не должен использовать заглавные буквы .

Или, может быть, есть способ просто загрузить текстовое поле с нажатой клавишей Shift? Это обычный способ реализации?

Ответы [ 7 ]

61 голосов
/ 18 января 2012

Установка заглавных букв в Word должна сделать это, поэтому что-то еще идет не так.Вы уверены, что это переключается на фактический UITextField, который вы тестируете?Вы уверены, что не можете переопределить это как-то в коде?Вы можете установить его программно с помощью:

[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];

Существует также исключение (для документов ), где это будет игнорироваться:

Некоторые типы клавиатур делаютне поддерживает автокапитализацию.В частности, этот параметр игнорируется, если значение в свойстве keyboardType установлено равным UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad или UIKeyboardTypeNamePhonePad.

Это относится к вам?

22 голосов
/ 18 января 2012

Вы используете симулятор или реальное устройство?Если вы используете симулятор, корпус будет учитывать состояние сдвига и заглушки физической клавиатуры вашего компьютера.

15 голосов
/ 25 января 2012

Я только что проверил это в своем приложении, и он уже сделал капитализацию по умолчанию. поведение определяется не кодом приложения, а глобальными настройками iphone.

Запустите Настройки iOS . перейдите к Общие , затем Клавиатура , там у пользователя есть опция для "Автокапитализация" . это выключено?

в моем случае он был включен, поэтому в моем приложении и календаре была эта функция, и когда я ее выключал, в обоих приложениях эта функция отсутствовала, поскольку пользователь решил, что эта функция ему не нужна.

4 голосов
/ 13 октября 2015

Некоторые клавиатуры игнорируют тип заглавных букв

Некоторые типы клавиатур не поддерживают автокапитализацию.В частности, этот параметр игнорируется, если значение в свойстве keyboardType установлено равным UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad или UIKeyboardTypeNamePhonePad.

Подробнее о ссылке для разработчика

4 голосов
/ 10 мая 2015

Отключение заглавных букв

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

Для заглавных букв всех символов

textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

Для заглавных букв первого символа предложения

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;

Для заглавных букв первого символа всех словв предложении

textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
2 голосов
/ 11 декабря 2015

Вот обновление Swift 2.0 для всех персонажей:

SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters
0 голосов
/ 24 мая 2017

У меня была та же проблема со свойством заглавных букв, я просто изменил тип клавиатуры на Default, и все начало работать как положено. В моем случае я ранее установил для KeyType значение NamePhonePad, которое не поддерживает автокапитализацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...