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после изменения значения этого свойства моего пользовательского класса ( например, в ответ на действие кнопки ), в противном случае экранная клавиатура не изменит состояние до следующего нажатия клавиши.

Другие вопросы по тегам