2012-02-25 2 views
4

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

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

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

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

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


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

ответ

3

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

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

0

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

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

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

myViewController.preferredFramesPerSecond = 20; 
Смежные вопросы