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

时间:2011-12-22 06:18:23

标签: objective-c keyboard custom-controls uitextfield subclass

我的应用程序将要求用户输入化学公式(H2O,Na ^ 2 +),并且由于下标和上标可能使打字过程让用户感到困惑,我决定制作一个自定义键盘。

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

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

1 个答案:

答案 0 :(得分:5)

是的,您需要创建自己的UIView

子类

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

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

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

自定义键盘非常简单:

  • ,或者覆盖inputAccessoryView,允许您显示附加到键盘的自定义视图
  • 要么覆盖inputView,要么返回一个自定义视图,代替键盘显示。