#ios #objective-c #cocoa-touch #keyboard #uikit
#iOS #objective-c #cocoa-touch #клавиатура #uikit
Вопрос:
Cocoa Touch позволяет изменять внешний вид клавиатуры, устанавливая свойство keyboardAppearance протокола UITextInputTraits, который реализован в классах UITextField и UITextView.
Похоже, что обновление свойства keyboardAppearance, когда клавиатура уже отображается на экране, не обновляет внешний вид клавиатуры.
В качестве обходного пути я думал отключить клавиатуру и снова открыть ее. Есть ли лучший способ решить проблему?
Комментарии:
1. Я не верю, что когда-либо видел стили переключения типов клавиатуры на экране. Даже если бы вы могли, я не удивлюсь, если это нарушает правила пользовательского интерфейса Apple во время проверки. Что конкретно вы пытаетесь сделать, может быть, мы можем предложить альтернативные идеи?
2. Это часть функции автоматической смены темы (светлая / темная или день / ночь), аналогичной той, что реализована в Tweetbot и Tick. Первые просто используют темную клавиатуру для обеих тем, в то время как вторые просто отключают клавиатуру при автоматической смене темы.
3. О, я понимаю. Извините, тогда у меня нет лучшего ответа. Может быть, установите тему на основе времени до открытия клавиатуры? По крайней мере, тогда при следующем естественном открытии клавиатуры она будет соответствовать.
Ответ №1:
Это досадное ограничение, у меня такое же требование.
Единственным вариантом, который я смог найти, было вызвать:
self.textView.resignFirstResponder()
self.textView.keyboardAppearance = UIKeyboardAppearance.Dark
self.textView.becomeFirstResponder()
Это работало без обновления, но поскольку я подключен к UIKeyboardWillShow / HideNotifications, Которые изменяют наборы содержимого и т. Д., Произошла видимая перестановка содержимого под клавиатурой.