Настройка клавиатуры iPhone

Есть ли способ изменить или создать собственную клавиатуру iPhone, чтобы вы могли вводить неподдерживаемые языки?

Ответ 1

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

Чтобы создать его:

  • Создайте представление клавиатуры. Вы можете использовать любые подзаголовки, которые вы хотите. Самый полезный способ сделать это, вероятно, создать подкласс UIView.
  • Расположите экземпляр вашего представления клавиатуры, который будет возвращен любым свойством UIResponder inputView. Для UITextView и UITextField это так же просто, как присвоение свойства; для других классов вам, вероятно, придется подкласс или swizzle accessors, поскольку свойство объявляется только для чтения по умолчанию.

Подробнее об этом можно узнать в документации.

К сожалению, на самом деле использование этой пользовательской клавиатуры сложнее. Начиная с iOS 4.3, ни UITextField, ни UITextView не соответствуют протоколу UITextInput, который был бы идеальным для этой цели. Для UITextView вы сможете заставить его работать с использованием методов, предоставляемых классом, но поскольку UITextField не дает никакого способа найти текущий выбор или позицию курсора, вы не сможете полностью создать полноценную клавиатуру -документированные методы (append и delete-from-end возможны, и даже вставляются в текущую позицию, манипулируя буфером обмена, но кнопка "удалить предыдущий символ" на стандартной клавиатуре окажется невозможным).

Как и в iOS 5.0, UITextField и UITextView, наконец, реализуют протокол UITextInput. Теперь нужно просто вставить и удалить текст в позиции курсора.

Ответ 2

Нет, в настоящее время нет способа сделать это.

Есть некоторые хакерские способы добавления вашей собственной кнопки с помощью добавления SubView. Но он не поддерживается и может выйти из строя в любое время.

Если вы решили создать свой собственный, вам, вероятно, придется свернуть свой собственный блок управления текстовыми полями и любой другой элемент управления, которому требуется клавиатура. Другими словами, это не идеальный вариант.