в приложении opengl зависает раскол клавиатуры - PullRequest
4 голосов
/ 25 февраля 2012

У меня есть приложение OpenGL с UITextField в главном меню. Когда я нажимаю на текстовое поле, появляется клавиатура, и я могу редактировать текст. Но если я работаю под iOS 5 и пытаюсь разделить клавиатуру, клавиатура начинает разделяться (я имею в виду анимацию), а затем зависает, когда я отпускаю пальцы. Я имею в виду, что это висит на половину расщепления - и не отвечает больше. Но мое приложение все еще живо - и рендер работает хорошо - фоновая анимация все еще работает.

Я только что сделал простой тест - вообще отключил рендер. И проблема ушла. Так что проблема связана с OpenGL.

Я использую OpenGL ES 1.1, XCode 4.2 и iOS SDK 5.0.

У кого-нибудь есть похожие проблемы? Есть предложения?

Пожалуйста, помогите.


UPDATE: Я только что протестировал еще две игры из AppStore - и в одной я тоже нашел эту проблему! «Дороги Рима HD бесплатно» - игра для iPad.

Ответы [ 2 ]

3 голосов
/ 17 июля 2012

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

Мы решили проблему с остановкой анимации на вашем GL-образе (держу пари, она называется EAGLView) при получении уведомления UIKeyboardWillChangeFrame и повторным запуском после UIKeyboardDidChangeFrame.

0 голосов
/ 26 февраля 2015

Старый пост, но я только что столкнулся с этой проблемой в ios 8 на iPad3.

Запуск приложения OpenGL со скоростью 60 кадров в секунду, по-видимому, затрудняет обновление клавиатуры. Уменьшение вашего FPS, когда наложение клавиатуры активно, решит проблему.

Я использую GLKViewController для управления обновлением и отрисовки обратных вызовов с обновлением 60fps, но это приводило к блокировке раскола клавиатуры наполовину. Я обнаружил, что лучшим решением для меня было установить для ViewFremesPerSecond значение 20 при получении ввода текста, а затем установить значение 60 после закрытия textView. Помимо исправления зависания клавиатуры, она также делает клавиатуру более чувствительной.

myViewController.preferredFramesPerSecond = 20;
...