Могу ли я создать собственное текстовое поле и клавиатуру для iOS без подкласса UIControl? - PullRequest
5 голосов
/ 22 декабря 2011

Мое приложение потребует, чтобы пользователь вводил химические формулы (H2O, Na ^ 2 +), и, так как подписки и надстрочные индексы могут затруднить процесс ввода для пользователя, я решил сделать собственную клавиатуру.

Когда пользователь вводит число в качестве нижнего индекса, оно должно отображаться в виде нижнего индекса на экране.Единственный способ сделать это - использовать NSAttributedString, который, очевидно, работает только с CoreText.Поскольку я не могу иметь CoreText в UITextField, мне нужно также создать собственное текстовое поле.Я изучал UITextView, но в документации говорится, что стили шрифта должны быть согласованы по всему тексту, а это означает, что у меня не может быть подписок.

Нужно ли создавать подкласс UIControl для обоих случаев и начинать с нуля?Или есть альтернативный класс, с которого я могу начать, у которого уже есть некоторые свойства клавиатуры / текстового поля?

1 Ответ

5 голосов
/ 22 декабря 2011

Да, вам нужно создать свой собственный подкласс UIView.

Но вы можете легко поддерживать ввод с клавиатуры, приняв протокол UIKeyInput, переопределив canBecomeFirstResponder, чтобы он возвращал YES, и добавивa UITapGestureRecognizer:

    [self addGestureRecognizer:
     [[UITapGestureRecognizer alloc] initWithTarget:self
                                             action:@selector(becomeFirstResponder)]];

Если вы хотите, чтобы пользователь мог выбирать диапазоны текста и использовать автокоррекцию, это сложнее: вам нужно принять протокол UITextInput.

Настройкаклавиатура действительно проста:

  • , либо вы переопределяете inputAccessoryView, что позволяет отображать пользовательский вид, прикрепленный к клавиатуре, либо
  • , вы переопределяете inputView, так чтовозвращает пользовательский вид, который будет отображаться вместо клавиатуры.
...