Во время разработки недавней функции для моего приложения для iPad я понял, что новое поведение стыковки / расщепления клавиатуры iOS5 вызывает огромные проблемы. Я использую InputAccessoryView для клавиатуры с текстовым полем, похожим на функцию поиска на странице Safari. Я отображаю клавиатуру поверх прокручиваемого UIWebView, поэтому отчасти мои проблемы связаны с уменьшенным UIWebview, когда клавиатура пристыкована, и с (в основном) полноэкранным веб-обзором, когда она отсоединена.
Основные проблемы, с которыми я столкнулся с API, заключаются в том, что новые уведомления UIKeyboardWillChangeFrameNotification и UIKeyboardDidChangeFrameNotification в лучшем случае являются шагом назад по сравнению с предыдущим API, и в них содержатся данные об мусоре, из-за которых практически невозможно понять, что на самом деле делает клавиатура много дел.
Можно ли распознать любое из следующих поведений клавиатуры без тщательного изучения начального / конечного кадров, возвращающихся в уведомлениях?
- Отключение клавиатуры
- Клавиатурные доки
- Раскол клавиатуры / Unsplits
- Отображение раскрепленной клавиатуры
- скрытая клавиатура скрывает
- Вид вращается, когда клавиатура отсоединена
Я придумал некоторые абстракции для распознавания пристыкованных или закадровых кадров, но даже с этим мой код становится очень неуправляемым. Если вы нашли лучшие способы сделать это, пожалуйста, ответьте или прокомментируйте. Я надеюсь, что я что-то здесь упускаю. Спасибо.