Подтвердить что ты не робот

Кто-нибудь нашел хороший способ использования новых событий клавиатуры iOS5?

Во время разработки недавно появившейся функции для моего iPad-приложения я понял, что новое поведение для стыковки/расщепления клавиатуры iOS5 вызывает огромные проблемы. Я использую inputAccessoryView для клавиатуры с текстовым полем на ней, подобным функции Safari find on page. Я показываю клавиатуру над прокручиваемым UIWebView, поэтому мои проблемы возникают из-за усохшего UIWebview, когда клавиатура состыкована и имеет (в основном) полноэкранный веб-просмотр, когда он отсоединен.

Основные проблемы, с которыми я столкнулся с API, - это то, что новые уведомления UIKeyboardWillChangeFrameNotification и UIKeyboardDidChangeFrameNotification являются в лучшем случае шагом назад от предыдущего API и содержат данные мусора, из-за которых практически невозможно понять, что на самом деле делает клавиатура во многих случаях.

Можно ли распознать любое из следующих действий клавиатуры без тщательного изучения начальных/конечных кадров, возвращающихся к уведомлениям?

  • Клавиатура Undocks
  • Клавиатурные доки
  • Разделение /Unsplits клавиатуры
  • Отключенные показы клавиатуры
  • Открытые шкуры клавиатуры
  • Просмотр вращается, когда клавиатура отстыкована.

Я придумал некоторые абстракции, чтобы распознать фреймы, которые состыкованы или за кадром, но даже с этим мой код становится очень неуправляемым. Если вы нашли лучшие способы сделать это, ответьте или прокомментируйте. Надеюсь, я что-то пропустил. Спасибо.

4b9b3361

Ответ 1

Дело не в том, чтобы переубедить это. Ничего важного не изменилось. Если клавиатура вставлена ​​в нижнюю часть экрана, вы получите уведомление "показать". Если он покинет пристыкованную позицию в нижней части экрана, вы получите уведомление "скрыть". Именно это произошло до iOS 5.

Единственное отличие состоит в том, что вместо того, чтобы покинуть пристыкованную позицию, потому что она перемещается за кадром, она может покинуть пристыкованную позицию, потому что пользователь отстегнул ее. Вы все равно получите "скрыть", чтобы вы могли переместить свой интерфейс обратно в базовое положение. Вам не нужно знать, что клавиатура теперь отстыкована (хотя вы можете узнать, что она не вне экрана от UIKeyboardDidChangeFrameNotification, если вы действительно этого хотите). Причина, по которой вам не нужно знать, заключается в том, что когда клавиатура отстыкована/разделена, пользователь может быть проактивным и перемещать клавиатуру, если она находится на пути к чему-то, что должно быть видно.

Таким образом, весь ваш старый код с iOS 5 продолжает работать нормально. Все это действительно очень умно...