Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека разработчика Mac

Разработчик

Руководство по программированию расширения приложения

PDF
На этой странице

Пользовательская клавиатура

Пользовательская клавиатура заменяет системную клавиатуру для пользователей, хотящих возможности, такие как новый метод ввода текста или возможность ввести текст на языке, не иначе поддерживаемом в iOS. Существенная функция пользовательской клавиатуры проста: Реагируйте на касания, жесты или другие входные события и обеспечьте текст в форме неприписанного NSString объект, в точке вставки текста входного объекта текущего текста.

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

Поймите пользовательские ожидания клавиатур

Для понимания, что пользователи ожидают пользовательской клавиатуры изучите системную клавиатуру — это является быстрым, быстро реагирующим, и способным. И это никогда не прерывает пользователя информацией или запросами. Если Вы обеспечиваете функции, требующие взаимодействия с пользователем, добавьте их не к клавиатуре, но на Вашу клавиатуру, содержащую приложение.

Функции клавиатуры, Которые Ожидают Пользователи iOS

Существует одна функция, которую пользователи iOS ожидают и что должна обеспечить каждая пользовательская клавиатура: способ переключиться на другую клавиатуру. На системной клавиатуре появляется эта подразумеваемая возможность, как кнопка вызвала ключ земного шара. iOS 8 обеспечивает определенный API для Вашей “следующей клавиатуры” управление, описанное в Обеспечении Способа Переключиться на Другую Клавиатуру.

Системная клавиатура представляет надлежащий набор ключей или расположение на основе UIKeyboardType черта входного объекта текущего текста. С точкой вставки в К: поле в Почте, например, системных ключевых изменениях периода клавиатуры: Когда Вы нажимаете и удерживаете ту клавишу, можно выбрать из числа ряда доменных суффиксов верхнего уровня. Разработайте свою пользовательскую клавиатуру с чертами типа клавиатуры в памяти.

пользователи iOS также ожидают автокапитализацию: В стандартном текстовом поле автоматически капитализируется первая буква предложения на чувствительном к регистру языке.

Эти функции и другие перечислены затем.

  • Надлежащее расположение и функции на основе черты типа клавиатуры

  • Автоисправление и предложение

  • Автоматическая капитализация

  • Автоматический период на двойной интервал

  • Поддержка Caps Lock

  • Иллюстрации клавишного колпачка

  • Многоступенчатый ввод для идеографических языков

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

Системные недоступные функции клавиатуры на пользовательские клавиатуры

Ваша пользовательская клавиатура не имеет доступа к большинству общих настроек клавиатуры в приложении Настроек (Настройки> Общий> Клавиатура), такие как Автокапитализация и Включает Caps Lock. И при этом Ваша клавиатура не имеет доступа к функции сброса словаря (Настройки> Общий> Сброс> Словарь Клавиатуры Сброса). Для предоставления пользовательской гибкости создайте стандартный пакет настроек, как описано в Реализации Пакета Настроек iOS в Руководстве по программированию Предпочтений и Настроек. Ваши пользовательские настройки тогда появляются в области Keyboard в Настройках, связанных с Вашей клавиатурой.

Существуют определенные объекты ввода текста, что Ваша пользовательская клавиатура не имеет право ввести в. Сначала любой безопасный объект ввода текста. Такой объект определяется secureTextEntry свойство, устанавливаемое в YEStrue и отличен путем представления введенных символов как точек.

Когда пользователь касается в безопасном объекте ввода текста, система временно заменяет Вашу пользовательскую клавиатуру системной клавиатурой. Когда пользователь тогда касается в незащищенном объекте ввода текста, Ваша клавиатура автоматически возобновляется.

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

  • UIKeyboardTypePhonePad

  • UIKeyboardTypeNamePhonePad

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

Разработчик приложений может выбрать отклонять использование всех пользовательских клавиатур в их приложении. Например, разработчик банковского приложения или разработчик приложения, которое должно соответствовать правилу конфиденциальности HIPAA в США, могли бы сделать это. Такое приложение использует application:shouldAllowExtensionPointIdentifier: метод от UIApplicationDelegate протокол (возвращающий значение NOfalse), и таким образом всегда использует системную клавиатуру.

Поскольку пользовательская клавиатура может нарисовать только в основном представлении UIInputViewController объект, это не может выбрать текст. Текстовый выбор находится под контролем приложения, использующего клавиатуру. Если то приложение обеспечивает интерфейс меню редактирования (такой что касается Сокращения, Копии и Вставки), клавиатура не имеет никакого доступа к нему. Пользовательская клавиатура не может предложить встроенные средства управления автоисправлением около точки вставки.

Пользовательские клавиатуры, как все расширения приложения в iOS 8.0, не имеют никакого доступа к микрофону устройства, таким образом, ввод предписания не возможен.

Наконец, не возможно вывести на экран ключевые иллюстрации выше главного края основного представления пользовательской клавиатуры, как системная клавиатура делает на iPhone, когда Вы касаетесь и содержите ключ в верхнем ряду.

Быстрый запуск API для пользовательских клавиатур

Этот раздел проводит Вам быструю экскурсию по APIs для создания клавиатуры. Рисунок 11-1 показывает некоторые важные объекты в рабочей клавиатуре и куда они происходят из в типичном потоке операций разработки.

Изобразите 11-1Basic структуру пользовательской клавиатуры image: ../Art/keyboard_architecture.pdf

Пользовательская Накладка на клавиатуру (в iOS “целевая шаблонная группа” Расширения Приложения) содержит подкласс UIInputViewController класс, служащий основным контроллером представления Вашей клавиатуры. Шаблон также включает базовое внедрение требуемой “следующей клавиатуры” кнопка, вызывающая advanceToNextInputMode метод UIInputViewController класс. Добавьте объекты, такие как представления, средства управления, и устройства распознавания жеста к вводу просматривают основное представление контроллера (в inputView свойство), как предложено на рисунке 11-1. Как с другими расширениями приложения, нет никакого окна в цели, и, поэтому, никакого корневого контроллера представления по сути.

Шаблон Info.plist файл прибывает предварительно сконфигурированный с минимальными значениями, необходимыми для клавиатуры. Посмотрите NSExtensionAttributes ключ словаря в цели клавиатуры Info.plist файл. Ключи для конфигурирования клавиатуры описаны в Конфигурировании файла Info.plist для Пользовательской Клавиатуры.

По умолчанию клавиатура не имеет никакого доступа к сети и не может совместно использовать контейнер с его содержанием приложения. Для включения этих вещей установите значение RequestsOpenAccess Булевская переменная вводит Info.plist файл к YEStrue. Выполнение этого разворачивает песочницу клавиатуры, как описано в Установлении и Поддержании Пользовательского Доверия.

Входной контроллер представления соответствует различным протоколам для взаимодействия с содержанием объекта ввода текста:

  • Чтобы вставить или удалить текст в ответ на сенсорные события, используйте UIKeyInput методы протокола insertText: и deleteBackward. Вызовите эти методы на входном контроллере представления textDocumentProxy свойство, представляющее входной объект текущего текста и соответствующее UITextDocumentProxy протокол. Например:

    • [self.textDocumentProxy insertText:@"hello "]; // Inserts the string "hello " at the insertion point
    • [self.textDocumentProxy deleteBackward]; // Deletes the character to the left of the insertion point
    • [self.textDocumentProxy insertText:@"\n"]; // In a text view, inserts a newline character at the insertion point
  • Для получения данных, необходимо определить, сколько текст является надлежащим для удаления, когда Вы вызываете deleteBackward метод, получите текстовый контекст около точки вставки от documentContextBeforeInput свойство textDocumentProxy свойство, следующим образом:

    • NSString *precedingContext = self.textDocumentProxy.documentContextBeforeInput;

    Можно тогда удалить надлежащий текст — например, отдельный символ или все назад к пробельному символу. Для удаления семантической единицей, такой как словом, предложение или абзац, использует функции, описанные в Ссылке CFStringTokenizer, и обращается к связанной документации. Обратите внимание на то, что каждый язык имеет свои собственные правила токенизации.

  • Управлять позицией точки вставки, например, для поддержки текстового удаления в прямом направлении, вызов adjustTextPositionByCharacterOffset: метод UITextDocumentProxy протокол. Например, для удаления вперед одним символом используйте код, подобный этому:

    • - (void) deleteForward {
    • [self.textDocumentProxy adjustTextPositionByCharacterOffset: 1];
    • [self.textDocumentProxy deleteBackward];
    • }
  • Чтобы реагировать на изменения в содержании активного текстового объекта или реагировать на инициируемые пользователями изменения в позиции точки вставки, реализуют методы UITextInputDelegate протокол.

Для представления раскладки клавиатуры, надлежащей входному объекту текущего текста, реагируйте на объект UIKeyboardType свойство. Для каждой черты Вы поддерживаете, изменяете содержание своего основного представления соответственно.

Для поддержки больше чем одного языка в пользовательской клавиатуре у Вас есть две опции:

  • Создайте одну клавиатуру на язык, каждый как отдельная цель, которую Вы добавляете к общему, содержащему приложение

  • Создайте единственную многоязычную клавиатуру, динамично переключив ее основной язык как надлежащий

    Для динамичного переключения основного языка используйте primaryLanguage свойство UIInputViewController класс.

В зависимости от числа языков Вы хотите поддерживать, и пользовательский опыт, который Вы хотите обеспечить, выбирают опцию, имеющую большую часть смысла.

Каждая пользовательская клавиатура (независимый от значения RequestsOpenAccess ключ), имеет доступ к основному словарю автоисправления через UILexicon класс. Используйте этот класс, вместе со словарем Вашего собственного проекта, для обеспечения предложений и автоисправлений, поскольку пользователи вводят текст. UILexicon объект содержит слова из различных источников, включая:

  • Непарные имена и фамилии от базы данных Address Book пользователя

  • Текстовые ярлыки, определенные в Настройках> Общий> Клавиатура> список Ярлыков

  • Словарь общих слов

Можно регулировать высоту основного представления пользовательской клавиатуры с помощью Автоматического Расположения. По умолчанию пользовательская клавиатура измерена для соответствия системной клавиатуры, согласно ориентации устройства и размеру экрана. Ширина пользовательской клавиатуры всегда устанавливается системой равняться текущему экрану width. Для регулирования высоты пользовательской клавиатуры измените ограничение высоты ее основного представления.

Следующие строки кода показывают, как Вы могли бы определить и добавить такое ограничение:

  • CGFloat _expandedHeight = 500;
  • NSLayoutConstraint *_heightConstraint = [NSLayoutConstraint constraintWithItem: self.view attribute: NSLayoutAttributeHeight relatedBy: NSLayoutRelationEqual toItem: nil attribute: NSLayoutAttributeNotAnAttribute multiplier: 0.0 constant: _expandedHeight];
  • [self.view addConstraint: _heightConstraint];

Основы разработки для пользовательских клавиатур

Существует две основы разработки для каждой пользовательской клавиатуры:

  • Доверие. Ваша пользовательская клавиатура предоставляет Вам доступ к тому, что вводит пользователь, таким образом, доверие между Вами и Вашим пользователем важно.

  • “Следующая клавиатура” ключ. Подразумеваемая возможность, позволяющая пользователю переключиться на другую клавиатуру, является частью пользовательского интерфейса клавиатуры; необходимо обеспечить один в клавиатуре.

Разработка для пользовательского доверия

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

Для клавиатур следующие три области особенно важны для установления и поддержания пользовательского доверия:

Безопасность данных нажатия клавиши. Пользователи хотят, чтобы их нажатия клавиш перешли к документу или текстовому полю, которое они вводят в, а не архивироваться на сервере или использоваться в целях, которые не очевидны для них.

Надлежащее и минимизируемое использование других пользовательских данных. Если Ваша клавиатура использует другие пользовательские данные, такой как от Служб определения местоположения или базы данных Address Book, нагрузка находится на Вас, чтобы объяснить и продемонстрировать преимущество Вашим пользователям.

Точность. Точность в преобразовании входных событий к тексту не является проблемой конфиденциальности по сути, но это влияет на доверие: С каждым введенным словом пользователи видят точность Вашего кода.

Для разработки для доверия сначала рассмотрите, запросить ли открытый доступ. Несмотря на то, что открытый доступ делает много вещей возможными для пользовательской клавиатуры, он также увеличивает Вашу ответственность (см. Таблицу 11-1).

Таблица 11-1Standard и открытый доступ (сетевые поддерживающие) клавиатуры — возможности и соображения конфиденциальности

Открытый доступ

Возможности и ограничения

Соображения конфиденциальности

От (значения по умолчанию)

  • Клавиатура может выполнить все нормальные режимы работы, ожидаемые основной клавиатуры

  • Доступ к словарю общих слов для автозамены и текстового предложения

  • Доступ к текстовым ярлыкам перечисляет в Настройках

  • Никакой совместно используемый контейнер с содержанием приложения

  • Никакой доступ к файловой системе кроме собственного контейнера клавиатуры

  • Никакая возможность участвовать прямо или косвенно в iCloud, Игровом Центре или Закупке В приложении

  • Пользователи знают, что нажатия клавиш переходят только к приложению, использующему клавиатуру

На

  • Все возможности несетевой пользовательской клавиатуры

  • Клавиатура может получить доступ к Службам определения местоположения и Адресной книге с полномочиями пользователя

  • Клавиатура и содержащий приложение может использовать совместно используемый контейнер

  • Клавиатура может отправить нажатия клавиш и другие входные события для обработки серверной стороны

  • Содержание приложения может обеспечить интерфейс редактирования для пользовательского словаря автозамены клавиатуры

  • Через содержание приложения клавиатура может использовать iCloud, чтобы гарантировать, что настройки и словарь автозамены актуальны на всех устройствах

  • Через содержание приложения клавиатура может участвовать в Игре Центральная и Закупка В приложении

  • Если клавиатура поддерживает управление мобильными устройствами (MDM), она может работать с управляемыми приложениями

  • Пользователи знают, что нажатия клавиш доступны разработчику клавиатуры

  • Необходимо придерживаться сетевых инструкций по клавиатуре в Инструкциях по Анализу App Store и Лицензионном соглашении Программы Разработчика iOS, соединенном от Страницы поддержки Анализа Приложения Apple.

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

Если Вы включаете открытый доступ (как описано Конфигурирование файла Info.plist для Пользовательской Клавиатуры), множество возможностей открываются, но Ваше увеличение ответственности также.

Каждая возможность клавиатуры, связанная с открытым доступом, переносит ответственность с Вашей стороны в качестве разработчика, как обозначено в Таблице 11-2. В целом обработайте пользовательские данные с самым большим уважением и не используйте его ни в какой цели, которая не очевидна для пользователя.

Табличный 11-2Open-access пользователь клавиатуры получает преимущества и ответственность разработчика

Возможность

Пользовательское преимущество в качестве примера

Ответственность разработчика

Совместно используемый контейнер с содержанием приложения

Управление UI для словаря автозамены клавиатуры

Полагайте, что словарь автозамены данные частного пользователя. Не отправляйте его в свои серверы ни в какой цели, которая не очевидна для пользователя.

Отправка данных нажатия клавиши к серверу

Улучшенный прогноз сенсорной обработки событий и ввода через вычислительные ресурсы разработчика

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

Динамический словарь автозамены на основе сети снабдил данными

Имена людей, мест и текущих событий в новостях добавили к словарю автоисправления

Не связывайте идентификационные данные пользователя с их использованием анализа трендов или другой основанной на сети информации ни по какой причине, которая не очевидна для пользователя.

Доступ Адресной книги

Имена, места и телефонные номера, относящиеся к пользователю, добавили к словарю автоисправления

Не используйте данные Адресной книги ни в какой цели, которая не очевидна для пользователя.

Доступ Служб определения местоположения

Соседние названия места добавили к словарю автоисправления

Не используйте Службы определения местоположения в фоновом режиме. Не отправляйте данные расположения в свои серверы ни в какой цели, которая не очевидна для пользователя.

Клавиатура открытого доступа и ее содержание приложения могут отправить данные нажатия клавиши в Ваш сервер, позволяющий Вам применить свои вычислительные ресурсы к таким функциям как сенсорная обработка событий и ввести прогноз. При использовании этой возможности не храните полученное нажатие клавиши, или речевая информация вне времени должна была предоставить текст назад пользователю или обеспечить функции, которые Вы объясняете пользователю. Обратитесь к Таблице 11-2 для дополнительной ответственности, которую Вы имеете при использовании возможностей клавиатуры открытого доступа.

Обеспечение способа переключиться на другую клавиатуру

Когда больше чем одна клавиатура включена, системный ключ земного шара клавиатуры позволяет пользователю выбрать клавиатуру. Посмотрите рисунок 11-2.

Изобразите 11-2The системный ключ земного шара клавиатуры image: ../Art/globe_key_2x.png

Ваша пользовательская клавиатура должна также обеспечить способ переключиться на другую клавиатуру.

Чтобы попросить, чтобы система переключилась на другую клавиатуру, вызовите advanceToNextInputMode метод UIInputViewController класс. Система выбирает надлежащую «следующую» клавиатуру; нет никакого API для получения списка включенных клавиатур или для выбора определенной клавиатуры для переключения на.

XCode Пользовательская Накладка на клавиатуру включает advanceToNextInputMode метод как действие его кнопки Next Keyboard. Для лучшего пользовательского опыта поместите свое управление следующей клавиатуры близко к тому же расположению на экране как системный ключ земного шара клавиатуры.

Начало работы с пользовательской разработкой клавиатуры

В этом разделе Вы изучаете, как создать пользовательскую клавиатуру, сконфигурировать ее согласно Вашим целям и выполнить ее в Средстве моделирования iOS или на устройстве. Вы будете также учиться о некоторых факторах UI принимать во внимание при замене системной клавиатуры.

Используя XCode пользовательская накладка на клавиатуру

Шаги для создания клавиатуры и ее содержания приложения отличаются немного от тех для других расширений приложения. Этот раздел обходит Вас посредством подъема основной клавиатуры и выполнения.

Создать пользовательскую клавиатуру в содержании приложения

  1. В XCode выберите File> New>, Project, и в шаблонной группе приложения для iOS выбирает Single View Application template.

  2. Нажать Далее.

  3. Назовите проект (например, «ContainingAppForKeyboard»), затем нажмите Далее.

  4. Перейдите к расположению, Вы хотите сохранить проект в, затем нажать Create.

    В этой точке у Вас есть пустое приложение для Вашего проекта служить простой роли, на данный момент, содержания цели клавиатуры. Перед представлением содержания приложения App Store оно должно выполнить некоторую полезную функцию. См. Инструкции по Анализу App Store, соединенные от Страницы поддержки Анализа Приложения Apple.

  5. Выберите File> New> Target, и в iOS “целевая шаблонная группа” Расширения Приложения выбирает Custom Keyboard template, затем нажимает Далее.

  6. Назовите цель, поскольку Вы хотели бы, чтобы имя клавиатуры появилось в пользовательском интерфейсе iOS (например, Пользовательская Клавиатура).

  7. Гарантируйте, чтобы Проект и “Встроил в Приложение” всплывающие меню, выводят на экран имя содержания приложения, затем нажимают Finish.

    Если Вам предлагают активировать схему новой цели клавиатуры, нажмите Activate.

Можно теперь дополнительно настроить название группы клавиатуры, как это появляется в Купленном списке Клавиатур в Настройках, как описано затем.

Настроить название группы клавиатуры

  1. В навигаторе проекта XCode выберите содержание приложения Info.plist файл, расположенный в папке Supporting Files приложения. Редактор списка свойств открывается, показывая содержание файла.

  2. Парение курсор по “Строке” имени пакета, затем щелкните «+» появляющаяся кнопка. Это создает новую, пустую строку списка свойств и выбирает ее Поле ключа.

  3. Начните вводить Bundle display name и когда имя автоматически заполняет, нажмите Return.

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

  5. Выберите File> Save для сохранения изменений в файле списка свойств.

Таблица, 11-3summarizes, UI представляет в виде строки для Вашей пользовательской клавиатуры, которую можно сконфигурировать в Info.plist файлы для клавиатуры и ее содержания приложения.

Строки интерфейса Table 11-3User указаны в цели и содержащий приложение Info.plist файлы

текст пользовательского интерфейса iOS

Info.plist ключ

  • Название группы клавиатуры в Купленных Клавиатурах перечисляет в Настройках

Дисплей пакета называет в содержании приложения Info.plist файл

  • Имя клавиатуры в Настройках

  • Имя клавиатуры в ключевом меню земного шара

Дисплей пакета называет в пользовательской цели клавиатуры Info.plist файл

Теперь можно выполнить основанную на шаблоне клавиатуру в Средстве моделирования iOS, или на устройстве, для исследования его поведения и возможностей.

Выполнить пользовательскую клавиатуру и присоединить отладчик XCode

  1. В XCode, набор точка останова в Вашей реализации контроллера представления.

    Например, установите точку останова в viewDidLoad метод.

  2. Используйте панель инструментов Xcode, чтобы гарантировать, что активное всплывающее меню схемы указывает схему клавиатуры и Средство моделирования iOS или подключенное устройство.

  3. Выберите Product> Run или щелкните по кнопке воспроизведения по верхнему левому из окна проекта XCode.

    XCode предлагает Вам выбирать приложение узла. Выберите приложение с легко доступным текстовым полем, таким как Контакты или Safari.

  4. Нажмите Run.

    XCode выполняет Ваше указанное приложение узла. Если это - Ваш первый раз, развертывая Ваше расширение клавиатуры Средства моделирования iOS или устройства, используйте Настройки, чтобы добавить и включить клавиатуру, следующим образом:

    1. Перейдите к Настройкам> Общий> Клавиатура> Клавиатуры.

    2. Касание добавляет новую клавиатуру.

    3. В Купленной группе Клавиатур коснитесь имени своей новой клавиатуры. Модальное представление, кажется, с переключателем включает Вашу клавиатуру.

    4. Коснитесь переключателя для включения клавиатуры. Предупреждение предупреждения появляется.

    5. На предупреждении предупреждения касание Добавляет Клавиатуру, чтобы закончить включать Вашу новую клавиатуру. Тогда коснитесь Сделанный.

  5. В Средстве моделирования iOS или на подключенном устройстве, вызовите свою пользовательскую клавиатуру.

    Чтобы сделать это, коснитесь для размещения точки вставки в текстовое поле — в любом приложении, или в поле Spotlight в Трамплине — для отображения системной клавиатуры. Тогда нажмите и удержите клавишу земного шара и выберите свою пользовательскую клавиатуру.

    Теперь можно исследовать поведение пользовательской клавиатуры, но еще не присоединяется отладчик. Базовая клавиатура, созданная из шаблона, имеет только одно поведение, обозначенное его кнопкой Next Keyboard: разрешение Вам переключиться назад на ранее используемую клавиатуру.

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

  6. Отклоните свою клавиатуру (так, чтобы на шаге 8 можно было совершить нападки viewDidLoad точка останова путем нового вызова клавиатуры).

  7. В XCode выберите Debug> Attach to Process> By Process Identifier (PID) или Name.

    В листе, появляющемся, введите имя своего расширения клавиатуры (включая пробелы), когда Вы указали его при создании его. По умолчанию это - имя для группы расширения приложения в навигаторе проекта.

  8. Нажмите Attach.

    XCode указывает в навигаторе Отладки, что ожидает для присоединения.

  9. В любом приложении в Средстве моделирования iOS или устройстве (в зависимости от которого Вы используете), вызовите клавиатуру путем ответвления в текстовом поле.

    Поскольку основное представление Вашей клавиатуры начинает загружаться, отладчик XCode присоединяет к Вашей клавиатуре, и XCode поражает Вашу точку останова.

Конфигурирование файла Info.plist для Пользовательской Клавиатуры

Информационный список свойств (Info.plist файл) ключи, которые являются определенными для пользовательской клавиатуры, позволяют Вам статически объявить существенные характеристики своей клавиатуры, включая ее основной язык и требует ли это открытого доступа.

Для исследования этих ключей откройте проект Xcode, к которому Вы добавили Пользовательский целевой шаблон Клавиатуры. Теперь выберите Info.plist файл в навигаторе Проекта ( Info.plist файл находится в папке Supporting Files для цели клавиатуры).

В форме исходного текста ключи для пользовательской клавиатуры следующие:

  • <key>NSExtension</key>
  • <dict>
  • <key>NSExtensionAttributes</key>
  • <dict>
  • <key>IsASCIICapable</key>
  • <false/>
  • <key>PrefersRightToLeft</key>
  • <false/>
  • <key>PrimaryLanguage</key>
  • <string>en-US</string>
  • <key>RequestsOpenAccess</key>
  • <false/>
  • </dict>
  • <key>NSExtensionPointIdentifier</key>
  • <string>com.apple.keyboard-service</string>
  • <key>NSExtensionPrincipalClass</key>
  • <string>KeyboardViewController</string>
  • </dict>

Каждый из этих ключей объяснен в Ключах Расширения Приложения. Используйте ключи NSExtensionAttributes словарь для выражения характеристик и потребностей пользовательской клавиатуры, следующим образом:

IsASCIICapable— Это булево значение, NOfalse по умолчанию, экспрессы, может ли пользовательская клавиатура вставить строки ASCII в документ. Установите это значение в YEStrue если Вы обеспечиваете тип клавиатуры в частности для UIKeyboardTypeASCIICapable черта типа клавиатуры.

PrefersRightToLeft— Это булево значение, также NOfalse по умолчанию, экспрессы, является ли пользовательская клавиатура для справа налево язык. Установите это значение в YEStrue если основной язык Вашей клавиатуры справа налево.

PrimaryLanguage— Это строковое значение, en-US (Английский язык для США) по умолчанию, выражает основной язык для Вашей клавиатуры с помощью образца <language>-<REGION>. Можно найти список строк, соответствующих языкам и областям в http://www .opensource.apple.com/source/CF/CF-476.14/CFLocaleIdentifier.c.

RequestsOpenAccess— Это булево значение, NOfalse по умолчанию, экспрессы, хочет ли пользовательская клавиатура увеличить свою песочницу, кроме того необходимую для основной клавиатуры. Если Вы запрашиваете открытый доступ путем установки значения этого ключа в YEStrue, Ваша клавиатура получает следующие возможности, каждого с сопутствующей ответственностью с точки зрения пользовательского доверия:

  • Доступ к Службам определения местоположения, базе данных Address Book, и Рулону Камеры, каждым полномочиям пользователя требования на первом доступе

  • Опция использовать совместно используемый контейнер с клавиатурой, содержащей приложение, активирующее опции, такие как обеспечение пользовательского управления словарем UI в содержании приложения

  • Возможность отправить нажатия клавиш, другие входные события и данные по сети для обработки серверной стороны

  • Возможность использовать UIPasteboard класс

  • Возможность играть аудио, включая щелчки клавиатуры с помощью playInputClick метод

  • Доступ к iCloud, который можно использовать, например, чтобы гарантировать, что настройки клавиатуры и пользовательский словарь автозамены актуальны на всех устройствах, принадлежавших пользователю

  • Доступ к Игре Центральная и Закупка В приложении, через содержание приложения

  • Возможность работать с управляемыми приложениями, если Вы разрабатываете свою клавиатуру для поддержки управления мобильными устройствами (MDM)

При рассмотрении, установить ли RequestsOpenAccess значение ключа к YEStrue, обязательно считайте Разработку для Пользовательского Доверия, описывающего Ваши обязанности по уважению и защите пользовательских данных.