Мы используем Phonegap для разработки нашего мобильного приложения, и мы позаимствовали код здесь, чтобы удалить черную панель next/prev/done с клавиатуры:
Что делает этот код, он находит черную полосу, как объект UIView, и вызывает на нем "removeFromSuperview".
Мы не знакомы с IOS SDK/API. Поэтому, хотя мы можем смотреть на код и получать представление о том, что он делает, мы не можем сказать, правильно ли он это делает или как его улучшить.
Конкретная проблема, с которой мы сталкиваемся:
У нас есть текстовое поле для написания сообщения, и мы вручную контролируем размещение этого поля точно над клавиатурой, аналогично встроенному sms-приложению. Другими словами, мы помещаем его туда, где должен был быть черный бар.
Когда мы фокусируем/вводим в поле сообщения, система подталкивает представление вверх. Похоже, что это механизм, чтобы убедиться, что текстовое поле не является невидимым, когда пользователь вводит в него.
Это происходит, даже если текстовое поле видимо.
Я заметил, что, поместив поле ввода прямо вверх, где черная полоса обычно будет (как и против нее), вид не прокручивается.
Итак, кажется, что система почему-то думает, что черная полоса все еще там!
(Чтобы дважды проверить: когда черная полоса не удаляется, и мы помещаем текстовое поле прямо над ней, мы можем сфокусироваться и ввести ее, а представление не будет прокручиваться).
Итак, вопрос:
Почему "система" подталкивает контент при редактировании текстового поля, которое стоит "сзади", где должна быть черная полоса? Это потому, что черная полоса еще не полностью удалена? Нужно ли нам что-то делать, чтобы "полностью" удалить черную полосу? Нужно ли нам заставить iOS пересчитать размер клавиатуры? или что именно?
Является ли этот механизм (нажатие на представление) реализованным iOS UIWebView или с помощью Phonegap?
Есть ли приложение для телефонных разговоров, которое решило эту проблему?