Первоначальное отображение виртуальной клавиатуры iPhone для UITextField происходит медленно. Это хакерство требуется?

Среди прочего, у меня есть приложение с UITextField. Когда пользователь впервые нажимает на текстовое поле, появляется заметная задержка до появления виртуальной клавиатуры. На 3GS это не слишком очевидно, но на более старом iPhone задержка может составлять около 1 секунды. После этого клавиатура всегда выскакивает мгновенно. Задержка возникает только при первом появлении клавиатуры после запуска приложения.

Похоже, что первоначальное создание экземпляра UIKeyboard занимает некоторое время (совсем немного ...), но после этого сохраняется.

Я нашел очень мало информации об этом, что меня удивило. Однако я нашел это описание проблемы вместе с решением для обхода.

http://blog.weareuproar.com/preloading-the-uikeyboard

У меня вопрос: это единственное доступное решение? Есть ли способ сигнализировать фреймворку (например, через информационный лист?) Для создания экземпляра клавиатуры при запуске?


person Chris Miles    schedule 27.10.2009    source источник


Ответы (1)


Нет, другого (задокументированного) способа сделать это нет. И даже встроенные приложения Apple (например, Карты) страдают от той же проблемы. Вы можете либо воспользоваться взломом, на который вы указали ссылку, либо последовать совету Apple, чтобы не загружать файлы заранее, прежде чем они действительно вам понадобятся. Между прочим, это больше не проблема iPhone 3Gs и нового iPod touch. Новые и быстрые устройства загружают клавиатуру почти мгновенно.

person Ole Begemann    schedule 27.10.2009
comment
Да, это известная проблема. Время загрузки было значительно улучшено с 2.x до 3.x, но оно все еще присутствует. Я также смог немного ускорить процесс, отключив автокоррекцию. Если вы изучите приложение с помощью Shark или Instruments, вы увидите, что многие ресурсы, связанные с клавиатурой, кэшируются при первой загрузке, поэтому вы мало что можете сделать, кроме предварительной загрузки клавиатуры. - person Brad Larson; 27.10.2009
comment
Спасибо, парни. кстати, все наши тесты проводились на 3.x. Вы правы в том, что проблема не так заметна на 3GS (или более новом iPod Touch). Я реализовал обходной путь для моего клиента, которого не устраивала задержка на старых iPhone. Они, вероятно, согласятся, что это стандартное поведение для приложений iPhone, но на самом деле обходной путь работает хорошо. - person Chris Miles; 28.10.2009