В первый раз, когда клавиатура вызывалась в приложении, всегда есть задержка (2-3 секунды). Есть ли способ или трюк, чтобы улучшить этот опыт? Я пытался использовать NSTreading, но он сбой при ошибке «выполняется только в основном потоке», если я использую [textfield getFirstResponder]; Есть идеи?Возможно ли увеличить производительность первого запуска клавиатуры в iOS
ответ
Как правило, не пытайтесь коснуться элементов пользовательского интерфейса из фонового потока, если только в документации не указано, безопасно.
В вашем случае попытка предварительной загрузки клавиатуры в фоновом режиме не будет работать. Имейте в виду, что клавиатура не создана только в вашем приложении - она разделяется по всей системе. Это означает, что если система решит, что ей необходимо очистить память, скорее всего, она будет «непривязать» клавиатуру, если она не будет видна.
Если это происходит в симуляторе, это, скорее всего, потому, что вы покидаете Симулятор после каждого тестового прогона. В результате клавиатура должна загружаться каждый раз, когда вы запускаете тест. Однако, если это происходит на устройстве, то, скорее всего, ваше устройство часто работает с низким объемом памяти.
Это говорит о том, что если мгновенный показ невероятно важен, вы всегда можете попытаться использовать старый трюк создания невидимого первого ответчика UITextField
, а затем немедленно отложить первый ответчик, чтобы заставить клавиатуру загрузиться.
Да, я могу использовать этот трюк. Однако у меня есть анимация, отображаемая для отображения текстового поля. Если я запускаю клавиатуру перед кодом анимации, поток, кажется, заблокирован, и на анимации будет задержка, что тоже не очень хорошо. Как я уже сказал, задержка происходит только в первый раз, когда показывает клавиатура. Я понимаю, что этого нельзя избежать, если система спроектирована таким образом. Я просто хочу знать, есть ли какие-то трюки, которые я могу использовать. Невидимое текстовое поле является хорошим, но не работает в этом случае. – codingrhythm
К сожалению, нет никакого способа обойти это. Если вы заметили блок потоков, вполне вероятно, что они загружают клавиатуру в основной поток. Единственное, что вы можете сделать, это выяснить, когда ваше приложение будет временно бездействовать, а затем воспользоваться этой возможностью, чтобы заставить клавиатуру загружаться. –
Возможно, попробуйте другую клавиатуру? или попробуйте войти в настройку и посмотреть параметры ввода, и перейти на клавиатуру. в большинстве случаев это связано с тем, что программирование отстает или у вас больше программ, работающих в фоновом режиме
- 1. iOS Ошибка первого запуска
- 2. Обнаружение первого запуска приложения iOS
- 3. Получить экземпляр iOS-клавиатуры без первого ответчика
- 4. Кнопка html запуска активной клавиатуры на IOS?
- 5. Возможно ли программно подавать предиктивный контекст клавиатуры/исходный текст iOS?
- 6. Возможно ли, что мой закрытый код запуска приложения в iOS?
- 7. Возможно ли использование терминала для запуска приложения iOS в приборе?
- 8. Производительность запуска Java Java
- 9. iOS: NSUserDefaults во время первого запуска приложения?
- 10. iOS localizable.strings перестает работать после первого запуска
- 11. Как увеличить производительность данных?
- 12. Расширение клавиатуры iOS 8 Обнаружение изменения первого ответчика
- 13. Как увеличить производительность?
- 14. Возможно ли «увеличить» текст в WPF RichTextBox?
- 15. Есть ли флаг «первого запуска» в WP7
- 16. Как увеличить производительность в LWJGL?
- 17. Как увеличить производительность приложения?
- 18. Как увеличить производительность paramiko
- 19. увеличить производительность веб-сайта?
- 20. Как увеличить производительность игры?
- 21. Как увеличить производительность в fabric.Image.fromURL
- 22. Расширение клавиатуры: возможно ли наследовать функции и пользовательский интерфейс с клавиатуры iOS на складе?
- 23. Время запуска для запуска первого модульного теста в VS2015
- 24. Возможно ли разработать мобильное приложение для клавиатуры в ответном наживе
- 25. Возможно ли развернуть SearchView без отображения клавиатуры
- 26. ffmpeg - возможно ли увеличить продолжительность клипа?
- 27. Возможно ли иметь TextView без клавиатуры?
- 28. C# Увеличить размер кучи - Возможно ли это
- 29. Возможно ли увеличить тайм-аут CloudFlare?
- 30. Возможно ли увеличить совместимость AngularJS с IE6?
Использовать профилировщик времени процессора инструмента, чтобы увидеть, что приложение делает в первый раз, когда вы поднимаете клавиатуру. Возможно, это не клавиатура. – BergQuester
@BergQuester хорошо, я просто установил текстовое поле видимым и установил первый ответчик. Это все. И если я запускаю то же самое во второй и третий раз, он работает очень хорошо. – codingrhythm