Сочетания клавиш в iOS? - PullRequest
9 голосов
/ 03 августа 2010

Можно ли захватывать последовательности клавиш в сторонних приложениях для iPad / iPhone?

Длинная версия:

В моем превосходном путешествии по открытию vis-a-в моем новом iPad с его блестящей клавиатурной док-станцией, я обнаружил, к большой радости, что при редактировании текста в стандартных текстовых представлениях выпуска;Команды в диапазоне от ⌘C / ⌘P для копирования-вставки и ^ A, ^ B, ^ E и друзей для работы с линиями и символами.

Пока все хорошо, да?Проблема в том, что это увлекательное поведение ограничено текстовыми полями и, в частности, стандартными текстовыми полями.Что я действительно хотел бы, так это захватывать подобные события для собственного использования.

Проблема, которую я часто нахожу со многими приложениями, заключается в том, что они имеют тенденцию быть либо почти бесполезными, либо, по крайней мере, громоздкими, бездок-клавиатура (например, iWork Suite), или почти бесполезная, или, по крайней мере, громоздкая, с док-клавиатурой (большинство других приложений, которые не сильно зависят от ввода текста, а скорее сенсорные жесты [то естьскажем, период большинства других приложений]).

Многие игры, например, Civilization Revolution и подобные, получили бы огромную пользу от простого добавления возможности использовать клавиши со стрелками для перемещения юнитов и клавишу вводадо конца поворота.

Итак, вопрос, как указано выше: есть ли способ захватить и отреагировать на эти события, чтобы предложить альтернативу командам касания для тех, кто желает этого и имеет аппаратное обеспечение?

Отказ от ответственности: Я не собираюсь разрабатывать приложения, которые опираются исключительно на keyboконечно, и никто не должен.Сенсорный интерфейс имеет первостепенное значение.Это просто не всегда полностью практично.

Ответы [ 3 ]

6 голосов
/ 03 августа 2010

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

Что касается сочетаний клавиш с клавишами-модификаторами, таких как копирование / вставка или отмена / повтор, Apple, кажется, поддерживает только основы,не позволяет создавать собственные.Они используют методы в UIResponder: –canPerformAction:withSender: и undoManager.

Поэтому, если бы я писал игру и хотел воспользоваться преимуществами клавиатуры, я бы создал подкласс UIResponder и соответствовал бы ему.Протокол UITextInput.И тогда сделайте это первым ответчиком.Однако это, вероятно, вызовет программную клавиатуру, если физической нет.

Мой собственный отказ от ответственности: Я не выполнил всю тяжелую работу, чтобы использовать UITextInput таким образом,это не предназначалось для использования, поэтому я не знаю, насколько реально было бы заставить его работать.И я не очень хочу.Скорее давайте все файловые отчеты об ошибках, чтобы заставить Apple создать API, который позволяет нам получать более точный ввод с клавиатуры.

4 голосов
/ 08 ноября 2013

В iOS 7 было добавлено свойство UIResponder keyCommands и класс UIKeyCommand для поддержки ярлыков.Просто переопределите keyCommands, чтобы получить массив UIKeyCommand, и все будет хорошо.

0 голосов
/ 21 июня 2013

Стоит упомянуть: хотя детали в настоящее время находятся под NDA, Apple добавляет поддержку сочетаний клавиш / событий в iOS 7.

Я подозреваю, что это будет работать аналогично тому, как это работает в Mac OS X, что кратко описано в этом ответе на аналогичный вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...