Есть ли способ изменить или создать собственную клавиатуру 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. Но он не поддерживается и может выйти из строя в любое время.
Если вы решили создать свой собственный, вам, вероятно, придется свернуть свой собственный блок управления текстовыми полями и любой другой элемент управления, которому требуется клавиатура. Другими словами, это не идеальный вариант.