Ответ 1
Используете ли вы симулятор или реальное устройство? Если вы используете симулятор, корпус будет уважать состояние смены и блокировки крышки физической клавиатуры на вашем компьютере.
Откройте приложение Apple Calendar. Когда вы называете новое назначение, оно автоматически заглаживает первую букву. Для этого он не использует своп-стиль "исправления".
В жизни я не могу воспроизвести это поведение. В IB я установил UITextField Capitalization в Word, но, похоже, это не имеет никакого эффекта. Если я включу исправление, оно заменит слово с заглавной версией, но это не совсем правильно.
Нужно ли мне обрабатывать это в коде, проверяя каждое нажатие клавиши? Это, вероятно, тривиально, за исключением того, что я беспокоюсь обо всех случаях, которые я пропущу, например, когда пользователь вручную использует "shift", чтобы скрыть капитализацию или удалить и повторно ключи, и в этом случае он не должен использовать.
Или, может быть, есть способ просто загрузить текстовое поле со сдвигом нажатой? Это общий способ его реализации?
Используете ли вы симулятор или реальное устройство? Если вы используете симулятор, корпус будет уважать состояние смены и блокировки крышки физической клавиатуры на вашем компьютере.
Установка капитализации в Word должна делать это, поэтому что-то еще происходит не так. Вы уверены, что переключились на фактический UITextField, который вы тестируете? Вы уверены, что не можете переопределить его в коде? Вы можете установить его программно с помощью:
[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];
Также есть исключение (за docs), где это будет проигнорировано:
Некоторые типы клавиш не поддерживают автоматическую капитализацию. В частности, этот параметр игнорируется, если значение в свойстве keyboardType установить в UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad или UIKeyboardTypeNamePhonePad.
Это относится к вам?
Я только что проверил это в своем приложении, и он по умолчанию уже сделал капитализацию. поведение не определяется вашим кодом приложения, а глобальными настройками iphone.
запустите Настройки iOS. перейдите в Общие, затем Клавиатура, там у пользователя есть опция "Авто-Капитализация" . это от?
в моем случае он был включен, поэтому мое приложение и календарь имели эту функцию, когда я отключил его, обе приложения не имеют этой функции, потому что пользователь решил, что он не хочет эту функцию.
Отказ капитализации
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
Чтобы использовать все символы
textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
Чтобы загладить первый символ предложения
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
К заглавке первого символа всех слов в sentense
textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
Некоторые клавиатуры игнорируют тип капитализации
Некоторые типы клавиш не поддерживают автоматическую капитализацию. В частности, этот параметр игнорируется, если значение в свойстве keyboardType установлено в UIKeyboardTypeNumberPad, UIKeyboardTypePhonePad или UIKeyboardTypeNamePhonePad.
Вот обновление Swift 2.0 для всех символов:
SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters
У меня была та же проблема с свойством capitalization, я просто изменил тип клавиатуры на Default и все начало работать как ожидалось. В моем случае я ранее устанавливал клавиатурный тип на NamePhonePad, который не поддерживает автоматическую капитализацию.