Как добавить китайскую клавиатуру на айфон писать руками
Добавление клавиатуры Pinyin не потребует от вас покупки или установки чего-либо дополнительного, и фактически может быть добавлено к клавиатуре iPhone всего за несколько простых шагов. Так что следуйте нашему руководству ниже, чтобы добавить клавиатуру и начать использовать ее прямо сейчас.
Добавление китайской клавиатуры на iPhone в iOS 8
Шаги в этой статье были написаны с использованием iPhone 6 Plus, в iOS 8. Шаги могут незначительно отличаться для других версий iOS, но очень похожи.
Шаг 1: Откройте «настройки» меню.
Шаг 2: Прокрутите вниз и выберите «Генеральная» вариант.
Шаг 3: Прокрутите вниз и выберите «клавиатура» вариант.
Шаг 4: Коснитесь «Клавиатуры» Кнопка в верхней части экрана.
Шаг 5: Нажмите «Добавить новую клавиатуру» кнопка в середине экрана.
Шаг 6: Прокрутите вниз и выберите «Упрощенный китайский)» вариант.
Нажмите и удерживайте кнопку глобуса, затем выберите китайскую клавиатуру, чтобы переключиться на нее. Это останется активной клавиатурой, пока вы не переключитесь обратно на другую установленную вами клавиатуру.
Этот же метод можно использовать и для добавления других клавиатур. Например, многие люди в конечном итоге решили использовать клавиатуру смайликов на своем iPhone, чтобы они могли отправлять смайлики и другие подобные значки. Если позже вы решите, что больше не хотите иметь одну из добавленных вами клавиатур, это руководство покажет вам, как ее можно удалить.
Хотите, чтобы над клавиатурой отображались предложения слов? Узнайте, как включить их в этой статье.
Во-вторых, при вводе текста система пытается дополнить вводимые слова, так что часто нет необходимости дописывать его до конца. Это особенно полезно при вводе китайских слов, когда ты знаешь только первый иероглиф.
В-третьих, существует масса словарей, разговорников, карточек для запоминания и других инструментов для iPhone/iPod Touch, с помощью которых учить язык будет проще и интереснее. Но об этом позже.
Сейчас давайте вместе посмотрим, как именно включается поддержка ввода на китайском языке.
1. Идем в настройки вашего iPod Touch или iPhone. Выбираем пункт Основные.
2. Опускаемся в самый низ основных настроек к пункту Клавиатура.
3. Выбираем пункт Междунар. клавиатуры
4. Листаем в самый низ списка и выбираем Упрощенную (упрощенные иероглифы) или Стандартную (традиционные иероглифы) систему. Поскольку я учу традиционные иероглифы, я выбираю второй вариант.
5. Включаем поддержку рукописного шрифта и пиньина.
Теперь можно попробовать, как работает ввод. Открываем Заметки. И создаем новую запись.
Напишем что-то самое простое, например, ?? (привет). Для начала сделаем это с помощью пиньина. Пишем ni, выбираем из выпадающего списочка нужный иероглиф (?), нам предложат продолжение. Выбираем ?. Вот и все.
Теперь попробуем рукописный ввод. Переключимся в соответствующий режим нажимая кнопочку, на которой схематично нарисован земной шар, один или несколько раз (все зависит от того, сколько клавиатур у вас установлено).
Если введенный вами иероглиф не распознался правильно, не отчаивайтесь, попробуйте написать его еще раз. Лишним это не будет. Ведь все мы знаем, что повторение — мать учения. Если после нескольких попыток иероглиф так и не распознался, загляните в какой-нибудь справочник. Скорее всего, вы не соблюдаете порядок написания иерог
лифа или упустили, а может нарисовали лишнюю, черточку.
Надеюсь, использование системы ввода текста на китайском языке у вас не вызовет никаких сложностей. Если же они возникнут, не стесняйтесь задавать вопросы в комментариях.
Зачастую для чтения хабра я использую мобильное приложение Хабрахабр для iPhone и iPad. Оно достаточно удобное для чтения статей, но не очень удобное для написания комментариев, особенно если хочется написать что-нибудь этакое, с использованием тегов форматирования. Неудобно, потому что все теги необходимо набирать вручную, поэтому очень легко ошибиться и, как результат, оставить некрасивый комментарий.
Так у меня появилась идея написать свою клавиатуру, в которой по нажатию на клавишу добавляется открывающийся и закрывающийся тег в текстовое поле. Курсор при этом должен стать прямо между ними, чтобы сразу же приступить к написанию текста. Также необходимо иметь возможность перемещать курсор с помощью жестов свайпа, субъективно это удобней, чем тянуть палец к полю, ожидать появления лупы, перемещать палец и надеяться, что курсор попадет куда надо. И наконец, пора бы уже разобраться с тегами «Сарказм» и «Зануда», которые не поддерживаются парсером хабра. Клавиатура должна иметь специальные клавиши для этих целей, а оформление тегов должно быть конфигурируемым в настройках клавиатуры, чтобы каждый мог указать тот вид, который ему нравится.
С выходом iOS 8 Apple открывает новый API, который позволяет разрабатывать расширения к приложениям. Клавиатура (Custom Keyboard) является одним из представителей таких расширений. О ней и пойдет речь. В статье вы узнаете о том, какие возможности, ограничения и баги предоставляет новый API, как разработать хабраклавиатуру, и как сделать так, чтобы ваша клавиатура появилась в AppStore, а следовательно и на устройствах ваших пользователей.
Возможности и ограничения
Открыв доступ к API для создания сторонних клавиатур, Apple построила узкий мостик между приложениями. С одной стороны каждое приложение по-прежнему находится в своей песочнице, но с другой — введенные данные в одном приложении теперь могут попадать в другое, либо напрямую отправляться на сервер. Такая функциональность является достаточно серьезной с точки зрения безопасности пользовательских данных, поэтому Apple строго определила, что можно делать, а что нельзя. Прежде, чем перейти к детальному описанию, хочу пояснить, что все типы расширений, в том числе и клавиатура, могут быть установлены на мобильное устройство только в составе основного приложения (приложения-контейнера). Например, в последнюю версию приложения Хабрахабр было добавлено расширение в виде виджета в Notification Center.
- Сторонняя клавиатура может быть использована практически в любом приложении, установленном на устройстве. Для этого пользователю необходимо собственноручно добавить установленную клавиатуру в настройках устройства. К счастью разработчики приложений могут запретить использование сторонних клавиатур в их приложениях, но об этом позже;
- Клавиатура может обмениваться данными как с приложением-контейнером, так и с сервером разработчика. Разрешение такого обмена настраивается пользователем, при чем изначально эта возможность отключена;
- Клавиатура может иметь доступ к сервису геолокации и адресной книги. Для получения доступа небходимо разрешение пользователя как в настройках клавиатуры, так и в настройках соответствующего сервиса;
- Клавиатура может обращаться к встроенному словарю для отображения вариантов автокоррекции и автодополнения введенного текста. Данные берутся из следующих источников:
- Адресная книга устройства (имена и фамилии предоставляются непарно);
- Сокращения, указанные пользвателем в настройках смартфона;
- Общий словарь.
- Нельзя унаследоваться от стандартной клавиатуры. То есть взять за основу встроенную клавиатуру и добавить в нее обработку жестов для управления курсором не получится, придется все делать практически с нуля. Более того, стандартную клавиатуру невозможно воссоздать в принципе. Причины описаны в следующих пунктах;
- Сторонняя клавиатура, как и другие типы расширений, не имеет доступа к микрофону, что делает невозможным поддержку голосового ввода;
- Стороння клавиатура не может быть использована для ввода скрытого текста ( secureTextEntry = YES ). То есть, если поле предназначено для ввода пароля, то пользователь сможет воспользоваться только стандартной клавиатурой;
- Кастомная клавиатура не может быть использована для полей с типом UIKeyboardTypePhonePad и UIKeyboardTypeNamePhonePad ;
- Клавиатура не имеет доступа к выделению текста в поле ввода. То есть поменять выделение без участия пользователя не получится;
- В отличие от стандартной клавиатуры, в сторонней не получится вылезти за пределы фрейма. То есть нельзя отобразить что-либо выше клавиатуры, как, например, при длительном нажатии на клавиши верхнего ряда стандартной клавиатуры;
- Разработчики могут запретить использование сторонних клавиатур в их приложениях. Для этого необходимо переопределить метод application:shouldAllowExtensionPointIdentifier: протокола UIApplicationDelegate . Для идентификатора с именем UIApplicationKeyboardExtensionPointIdentifier необходимо возвращать NO . К слову, для iOS 8 это единственный тип расширений, который можно запретить использовать.
Хабраклавиатура
С теорией разобрались, переходим к практике.
Создаем новый проект, выбираем Application, все стандартно.
Далее необходимо добавить новый Target «Custom Keyboard».
- - (void)dismissKeyboard – позволяет скрыть клавиатуру. Это та возможность, которая отсутствует во всех стандартных клавиатурах в iPhone;
- - (void)advanceToNextInputMode – выполняет отображение следующей клавиатуры. Список доступных клавиатур определяется пользователем в настройках устройства;
- - (void)requestSupplementaryLexiconWithCompletion:(void (^)(UILexicon *))completionHandler – предоствляет массив пар строк. Каждая пара состоит из строки, которую может ввести пользователь userInput и строки, которая является автодополнением или автокоррекцией documentText . Например, на моем iPhone этот метод возвращает 151 пару.
- - (void)adjustTextPositionByCharacterOffset:(NSInteger)offset – позволяет управлять курсором;
- - (NSString *)documentContextBeforeInput – возвращает строку до курсора;
- - (NSString *)documentContextAfterInput – возвращает строку после курсора;
- - (void)insertText:(NSString *)text – вставляет строку после курсора;
- - (void)deleteBackward – удаляет один символ перед курсором;
- - (UIKeyboardAppearance)keyboardAppearance – позволяет определить, какая тема используется: светлая или темная;
- - (UIKeyboardType)keyboardType – позволяет определить, какой тип клавиатуры требует поле ввода.
- Первые два метода никогда не вызываются вне зависимости от того, выделяет пользователь текст или нет;
- Последние два метода вызываются, но объект textInput всегда nil .
Второй точкой соприкосновения для разработчика является файл Info.plist . Помимо уже известных полей он содержит группу NSExtension :
В ней указывается тип разрабатываемого расширения, имя класса-контроллера и атрибуты. Обратите внимание на атрибут RequestsOpenAccess . С помощью его система понимает необходим ли вам расширенный доступ: обмен данными с приложением-контейнером или сервером, доступ к геолокации и адресной книге. Если укажете true , то будьте готовы объяснять Apple для чего вам это все нужно.
На этом ознакомление с API завершаем и приступаем к непосредственной разработке.
Для начала определим лэйаут. Я планировал реализовать поддержку портретной и альбомной ориентаций для iPhone и со временем доработать для iPad. Лэйаут для портретной и альбомной ориентаций должен был немного отличаться. Для этих целей отлично подходила новоиспеченная технология Sizes Classes. Почему я пишу в прошедшем времени? Да потому что все планы провалились. Дело в том, что в независимости от ориентации система назначает нам одинаковые Size Classes: wCompact и hCompact, что соответствует альбомной ориентации для iPhone. Скорее всего это связано с тем, что фрейм клавиатуры занимает не весь экран, а только нижнюю половину. В принципе это логичное поведение, и, чтобы обойти эту проблему, можно вручную назначить произвольный Size Class для контроллера. Для этого необходимо воспользоваться методом setOverrideTraitCollection:forChildViewController: . Но не тут-то было, по факту вызов этого метода ни на что не влияет, то есть UITraitCollection дочернего контроллера остается неизменным. Если у кого-либо из вас был положительный опыт использования этого метода, прошу им поделиться. Версию кода с выше описанным поведением я залил в отдельный бранч, если кому-то интересно можете там поковыряться. Пока проблема не решена будем довольствоваться одним лэйаутом для всех ориентаций:
Для удобства управления курсором добавим разпознование жестов Swipe. В xib добавляем два объекта UISwipeGestureRecognizer , в коде реализуем обработчики событий:
Далее добавляем обработчики для закрытия клавиатуры и перехода к следующей:
- Удаление последнего символа перед курсором, как в стандартной клавиатуре:
- Удаление всего введенного текста вне зависимости от положения курсора. Чтобы избежать случайного удаления текста будем использовать UILongTapGestureRecognizer :
Для тегов «Сарказм» и «Зануда» необходимо создать настройки, чтобы каждый пользователь мог сам установить значения для открывающегося и закрывающегося тегов. Добавляем Settings Bundle:
Переходим в Settings.bundle -> Root.plist и заполняем все необходимые поля. Ниже представлен исходный код настроек и то, что должен увидеть пользователь:
Но в реальности при установке клавиатуры заначения для тегов не отображаются, то есть по факту поля пустые. Эти поля задаются по ключу Default Value . Сначала я подумал, что делаю что-то не так. Но даже, если зайти в настройки и вручную заполнить эти поля, то при выходе из настроек значения не сохраняются. Это баг. С аналогичной проблемой столкнулись и другие пользователи, несколько топиков на Stackoverflow тому подтверждение, то есть проблема не является локальной. Такое ощущение, что разработчики забыли вызвать метод synchronize у объекта NSUserDefaults . Печально, но остается только ждать обновления iOS 8.1 или iOS 8.0.1. Чтобы учесть эту проблему, я использую дефолтные значения в коде, если из настроек загрузить не удалось.
С хранением тегов разобрались, теперь напишем обработчик нажатия клавиш для добавления тегов в поле ввода:
Здесь используется уже описанный ранее хак с задержкой выполнения кода. Связано это с тем же курсором. Когда мы вызываем метод insertText: курсор перемещается не мгновенно, и это необходимо учитывать. Чтобы объяснить, для чего здесь нужно учитывать смещение курсора, приведу пример: допустим мы хотим добавить ссылку на какого-либо Хабраюзера. Для этого необходимо добавить тег и далее вписать имя пользователя между кавычек. Для удобства я сделал так, чтобы курсор автоматически устанавливался в позицию между кавычек. Аналогично и для других тегов. Для этих целей используется выше описанный метод moveTextPositionToInputPointForTag: , который, используя массив строк-меток, определяет позицию, в которую необходимо установить курсор.
Реализацию завершили, выбираем расширение в качестве активной схемы и запускаем. Для удобства отладки рекомендую зайти в «Edit Scheme» и поставить галочку напротив «Debug executable». Это позволит одновременно отлаживать и расширение, и основное приложение:
Для установки клавиатуры необходимо перейти в Настройки -> Основные -> Клавиатура -> Клавиатуры -> Новые клавиатуры…
На скриншоте справа представлен диалог, который отображается, когда пользователь пытается разрешить полный доступ для клавиатуры. По правде сказать, этот текст намекает мне выбрать «Не разрешать».
В качестве бонуса хочу показать иерархию вью стандартной клавиатуры. Комментарии оставлю при себе, пускай каждый сам делает выводы:
Размер клавиатуры, словарь из адресной книги и типографские символы.
Текст пишут все, и сейчас мы чаще всего делаем это на ходу. Во всех смартфонах есть куча способов упростить себе набор текста, и девайсы Apple не исключение. Рассказываем о 10 полезных функциях клавиатуры Айфона.
Основные настройки
Перейдите в основные настройки и найдите клавиатуру. В этом меню вы увидите все настройки ввода: автокоррекция, подсказки и предиктивный набор. Оставлять включёнными можно не все, но на некоторые стоит обратить особое внимание.
Я бы рекомендовал оставить включённой быструю клавишу «.», автоматически добавляющую пробел после всех знаков препинания. Caps Lock тоже может быть полезен, но злоупотреблять им не нужно, так как в интернете ВОТ ТАКАЯ ПИСАНИНА воспринимается как разговор на повышенных тонах, что не очень приятно.
Ещё одна полезная штука — смарт-пунктуация. Она автоматически меняет знаки препинания на типографские. Например, два минуса (- -) превращаются в тире (—), а странные кавычки (“”) становятся нормальными («»). Но некоторым людям нужны именно определённые знаки — включайте или выключайте смарт-пунктуацию по вашему усмотрению.
Словарь сокращений
Этими штуками пользуются почти все. В Айфонах есть очень крутая функция «замены текста», которая позволяет заменять сокращения полными словами.
Чтобы сделать сокращения, зайдите в настройки клавиатуры и нажмите на «Замена текста», а затем на плюс в правом углу:
Создав сокращение, Айфон будет сам предлагать вам заменить набор букв на фразу или слово.
Размер клавиатуры
Форматирование текста
Эта штука работает не во всех приложениях, но она полезная. Вы можете менять форматирование текста: делать его жирным, курсивным, зачёркнутым или подчёркнутым. Просто выделите слово и выберите нужный формат. Но не забывайте про цифровой этикет.
Предварительный просмотр символов
Если вас это раздражает, то функцию можно отключить в настройках клавиатуры. Переключите тумблер около надписи «Просмотр символов» в основных настройках клавиатуры.
Хитрый словарик
Довольно странное решение Apple — запретить пользователям вносить изменения в словарь Айфона. Тем не менее это правило можно обойти с помощью адресной книги.
Если со временем Айфон так и не научился разговаривать на вашем сленге, то все нужные слова можно добавить в список контактов. Номер телефона при этом указывать не обязательно — просто напишите то, что вам нужно.
3D Touch и поиск опечаток
Во всех Айфонах с 3D Touch клавиатуру можно превратить в мини-трекпад, чтобы легко исправлять опечатки. Сильно нажмите на любую клавишу, и можно водить мини-курсором по тексту.
Встряхни и сотри
Чтобы сразу стереть весь текст, необязательно зажимать клавишу удаления. Достаточно встряхнуть смартфон, и всё само удалится.
Но если вы сделали это случайно, то встряхните телефон ещё раз и подтвердите возвращение текста.
Чтобы включить эту функцию в универсальном доступе, нужно найти функцию «Встряхивание для отмены»:
Эмодзи
Я не знаю, как у вас, но меня дико бесили Эмодзи. Жмёшь на переключение языка, а Айфон тебе показывает смайлики, которыми ты пользовался в последний раз в 8 классе. Если вас это тоже бесит, то заходите в настройки клавиатур и удаляйте их прямо сейчас:
Смена клавиатуры
Не нравится стандартная клавиатура Айфона? Не проблема — скачайте и установите другую. В AppStore есть много платных и бесплатных сторонних клавиатур, среди которых и Gboard от Google.
Скачайте стороннюю клавиатуру в AppStore, зайдите в настройки и поставьте её как основную, удалив старые.
Читайте также: