В приложении для iOS, как я могу определить, что пользователь нажал одну из клавиш со стрелками на своей внешней клавиатуре?
У меня есть пара приложений для iOS, которые представляют по своей природе линейно организованную информацию, позволяя пользователю перемещаться вперед и назад по данным с помощью экранных элементов управления. Я хотел бы позволить пользователям с док-станцией клавиатуры или сопряженной клавиатурой Bluetooth использовать клавиши со стрелками для перемещения вперед и назад. Поскольку приложения являются полноэкранными, для пользователя очень важно, чтобы не было риска отображения экранной клавиатуры в качестве побочного эффекта.
Я не могу найти API, который позволил бы мне сделать это в документации Apple; но я не могу быть уверен, что использовал правильные условия поиска.
Какие есть API, которые позволят мне добиться этого?
Обновление: я поднял это как улучшение на сайте отчетов об ошибках Apple.
4 ответа
На самом деле, я не подозреваю, что ответ "ты не можешь, не официальным способом".
По словам Apple, удобный пользовательский интерфейс является высшим приоритетом для платформы iPad, я думаю, что они делают все возможное, чтобы препятствовать поведению, которое будет зависеть от доступности клавиатуры. Приложения должны вести себя одинаково и обеспечивать одинаковую функциональность с аппаратной клавиатурой или без нее. По этой причине, вероятно, нет таких вещей, как "горячие клавиши" на клавиатуре или навигация, в которой не используются экранные элементы.
Но, как я уже сказал, это всего лишь предположение.
Ответ в разделе Как мне реагировать на клавиши со стрелками на внешней клавиатуре? - создать скрытое текстовое поле и реагировать на изменения выделения - сработало у меня.
Вы можете легко определить, какие клавиши со стрелками нажимаются, обращаясь к UIKeyInput
а также UIKeyInputDelegate
, Метод, который вы ищете конкретно, positionFromPosition:inDirection:offset:
,
После вызова этого метода (он используется iOS для определения диапазона выбора) он затем вызовет setSelectedText:
, Положил NSLog
заявления в positionFromPosition:inDirection:offset:
чтобы определить, как это работает (вы несете ответственность за сантехнику).
Также посмотрите на SimpleTextInput. Это предоставит вам шаблон на подклассы UITextInput
,
Вы можете полностью исключить клавиатуру, просто добавив поддержку пролистывания влево / вправо или жеста перетаскивания, чтобы пользователь мог по существу рассматривать приложение как фотогалерею. Никаких экранных элементов управления не требуется - это встроенная в устройство парадигма навигации, которую легко объяснить на заставке запуска приложения.
Однако если для поддержки других функций сбора данных в приложении требуется внешняя клавиатура, пользователи столкнутся с проблемой "рука гориллы"...