В приложении для iOS, как я могу определить, что пользователь нажал одну из клавиш со стрелками на своей внешней клавиатуре?

У меня есть пара приложений для iOS, которые представляют по своей природе линейно организованную информацию, позволяя пользователю перемещаться вперед и назад по данным с помощью экранных элементов управления. Я хотел бы позволить пользователям с док-станцией клавиатуры или сопряженной клавиатурой Bluetooth использовать клавиши со стрелками для перемещения вперед и назад. Поскольку приложения являются полноэкранными, для пользователя очень важно, чтобы не было риска отображения экранной клавиатуры в качестве побочного эффекта.

Я не могу найти API, который позволил бы мне сделать это в документации Apple; но я не могу быть уверен, что использовал правильные условия поиска.

Какие есть API, которые позволят мне добиться этого?

Обновление: я поднял это как улучшение на сайте отчетов об ошибках Apple.

4 ответа

Решение

На самом деле, я не подозреваю, что ответ "ты не можешь, не официальным способом".

По словам Apple, удобный пользовательский интерфейс является высшим приоритетом для платформы iPad, я думаю, что они делают все возможное, чтобы препятствовать поведению, которое будет зависеть от доступности клавиатуры. Приложения должны вести себя одинаково и обеспечивать одинаковую функциональность с аппаратной клавиатурой или без нее. По этой причине, вероятно, нет таких вещей, как "горячие клавиши" на клавиатуре или навигация, в которой не используются экранные элементы.

Но, как я уже сказал, это всего лишь предположение.

Ответ в разделе Как мне реагировать на клавиши со стрелками на внешней клавиатуре? - создать скрытое текстовое поле и реагировать на изменения выделения - сработало у меня.

Вы можете легко определить, какие клавиши со стрелками нажимаются, обращаясь к UIKeyInput а также UIKeyInputDelegate, Метод, который вы ищете конкретно, positionFromPosition:inDirection:offset:,

После вызова этого метода (он используется iOS для определения диапазона выбора) он затем вызовет setSelectedText:, Положил NSLog заявления в positionFromPosition:inDirection:offset: чтобы определить, как это работает (вы несете ответственность за сантехнику).

Также посмотрите на SimpleTextInput. Это предоставит вам шаблон на подклассы UITextInput,

Вы можете полностью исключить клавиатуру, просто добавив поддержку пролистывания влево / вправо или жеста перетаскивания, чтобы пользователь мог по существу рассматривать приложение как фотогалерею. Никаких экранных элементов управления не требуется - это встроенная в устройство парадигма навигации, которую легко объяснить на заставке запуска приложения.

Однако если для поддержки других функций сбора данных в приложении требуется внешняя клавиатура, пользователи столкнутся с проблемой "рука гориллы"...

Другие вопросы по тегам