Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];

Также есть исключение (за docs), где это будет проигнорировано:

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

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

Ответ 3

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

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

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

Ответ 4

Отказ капитализации

textField.autocapitalizationType = UITextAutocapitalizationTypeNone;

Чтобы использовать все символы

textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

Чтобы загладить первый символ предложения

textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;

К заглавке первого символа всех слов в sentense

textField.autocapitalizationType = UITextAutocapitalizationTypeWords;

Ответ 5

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

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

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

Ответ 6

Вот обновление Swift 2.0 для всех символов:

SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters

Ответ 7

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