Анимация UITextInput's textInputView

UIKit компоненты ввода текста, такие как UITextView а также UITextField иметь собственность inputView добавить пользовательскую клавиатуру. У меня есть два вопроса, касающихся этого.

  1. Если клавиатура в данный момент видна, а для свойства установлено новое представление ввода, ничего не происходит. Отмена и восстановление статуса первого респондента обновляет ввод и отображает новый вид. Это лучший способ сделать это? Если так, то это может ответить на мой больший вопрос:

  2. Можно ли анимировать переход между двумя входными представлениями?

2 ответа

Из документов UIResponder:

Объекты респондента, которым для сбора ввода от пользователя требуется настраиваемое представление, должны повторно объявить это свойство как readwrite и использовать его для управления своим настраиваемым представлением ввода. Когда получатель впоследствии становится первым респондентом, инфраструктура респондента автоматически представляет указанное представление ввода. Точно так же, когда представление отказывается от своего первого статуса респондента, инфраструктура респондента автоматически отклоняет указанное представление.

Так что, к сожалению, ответ на 1 - да, а 2 - нет.

  1. На самом деле есть способ сделать это чисто: UIResponder"s reloadInputViews, доступно с iOS 3.2!

  2. Я думаю, что вы можете оживить это с некоторой дополнительной работой:

    • Создайте прозрачное фоновое окно более высокого уровня UIWindowLevel чем окно клавиатуры.
    • Добавьте туда свою пользовательскую клавиатуру и анимируйте ее рамку.
    • Затем установите его в качестве ввода текста inputView и обновите первый респондент, как и вы.

Ваша пользовательская клавиатура изменит свое родительское представление с вашего пользовательского окна на клавиатурное, но, надеюсь, пользователь не заметит;)

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