UIKeyInput со всей клавиатурой заглавных букв
Я создал пользовательский вид ввода текста и пытаюсь заставить клавиатуру показывать все заглавные буквы на клавиатуре; похож на UITextField
, Вот что я пробовал, но у меня это не работает:
class CustomInput: UIView, UIKeyInput {
// UIKeyInput inherits this property
var autocapitalizationType: UITextAutocapitalizationType {
get { return .AllCharacters }
set { }
}
}
Я надеялся, что переопределение переменной и только .AllCharacters
заставит клавиатуру надеть все заглавные буквы, но это не так. Любые идеи, как я могу получить клавиатуру для всех заглавных букв?
2 ответа
У меня такая же проблема в приложении, над которым я сейчас работаю. Потратили немало времени, пытаясь выяснить это, особенно после autocorrectionType
а также keyboardType
оба, кажется, работают нормально.
Мой текущий обходной путь - сделать мой пользовательский вид реализации UITextInput
вместо UIKeyInput
, с фиктивным кодом для всех неиспользуемых свойств и функций. Чрезвычайно уродливый обходной путь, но это единственный способ заставить его работать, поэтому я бегу с этим.
Было бы интересно узнать, есть ли у кого-нибудь понимание основной проблемы здесь.
Я этого не видел, но недавно столкнулся с той же проблемой и пришел к выводу, что функциональность UIKit не работает и не работает так, как описано. Я отправил отчет об отзыве с примером проекта, демонстрирующим проблему: если пользовательское представление заменяется UITextView (без других изменений), все работает как положено:
FB13298309 (Клавиатура:autocapitalizationType
свойство ошибочно игнорируется для пользовательского UIView, соответствующего <UIKeyInput>)
Я подтвердил, что предоставление фиктивной реализацииUITextInput
протокол позволяет этому работать (здесь iOS 17.0).
Однако я считаю, что использование-reloadInputViews
как описано в ответе на динамическое обновление UITextView autocapitalizationType, не работает при динамическом изменении значения свойства. Я счел необходимым иметь представлениеresignFirstResponder
и сразуbecomeFirstResponder
после изменения значения этого свойства моего пользовательского класса ( например, в ответ на действие кнопки ), в противном случае экранная клавиатура не изменит состояние до следующего нажатия клавиши.