我是否可以为iOS创建自定义文本字段和键盘而不进行子类化UIControl?

Mah*_*hir 5 keyboard subclass objective-c custom-controls uitextfield

我的应用程序将要求用户输入化学公式(H2O,Na ^ 2 +),并且因为下标和上标可能使打字过程混淆用户,我决定制作自定义键盘.

当用户键入数字作为下标时,它应该在屏幕上显示为下标.我发现这样做的唯一方法是使用NSAttributedString,它显然只适用于CoreText.由于我不能在UITextField中使用CoreText,我还需要创建一个自定义文本字段.我正在研究UITextView,但文档中读到字体样式必须在整个文本中保持一致,这意味着我无法下载.

我是否需要为这两种情况创建子类UIControl并从头开始?或者是否有一个我可以开始的替代类已经具有键盘/文本字段的一些属性?

Nic*_*idt 5

是的,你需要创建自己的子类UIView.

但是你可以通过采用UIKeyInput协议轻松支持键盘输入,覆盖canBecomeFirstResponder所以返回YES并添加UITapGestureRecognizer:

    [self addGestureRecognizer:
     [[UITapGestureRecognizer alloc] initWithTarget:self
                                             action:@selector(becomeFirstResponder)]];
Run Code Online (Sandbox Code Playgroud)

我想让用户选择文本范围并使用自动更正,这更难:你需要采用协议UITextInput.

自定义键盘非常简单:

  • 或者,覆盖inputAccessoryView允许您显示附加到键盘的自定义视图,
  • 要么覆盖inputView,要么它返回一个自定义视图,该视图将显示在键盘的位置.