【问题标题】:Can I create a custom text field and keyboard for iOS w/o subclassing UIControl?我可以为没有子类化 UIControl 的 iOS 创建自定义文本字段和键盘吗?
【发布时间】:2011-12-22 06:18:22
【问题描述】:
我的应用程序将要求用户输入化学公式(H2O、Na^2+),并且由于下标和上标可能会使用户在输入过程中感到困惑,因此我决定制作一个自定义键盘。
当用户输入一个数字作为下标时,它应该在屏幕上显示为下标。我发现这样做的唯一方法是使用 NSAttributedString,它显然只适用于 CoreText。由于我不能在 UITextField 中使用 CoreText,因此我还需要创建一个自定义文本字段。我正在研究 UITextView,但文档显示字体样式必须在整个文本中保持一致,这意味着我不能有下标。
我是否需要为这两种情况都继承 UIControl 并从头开始?或者是否有一个我可以开始的替代类已经具有键盘/文本字段的一些属性?
【问题讨论】:
标签:
objective-c
keyboard
custom-controls
uitextfield
subclass
【解决方案1】:
是的,您需要创建自己的 UIView 子类。
但是您可以通过采用UIKeyInput 协议轻松支持键盘输入,覆盖canBecomeFirstResponder 使其返回YES 并添加UITapGestureRecognizer:
[self addGestureRecognizer:
[[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(becomeFirstResponder)]];
我想让用户选择文本范围并使用自动更正,这更难:你需要采用协议UITextInput。
自定义键盘真的很简单:
- 或者,您覆盖
inputAccessoryView,它允许您显示附加到键盘的自定义视图,
- 或者,您覆盖
inputView,因此它会返回一个自定义视图,该视图将显示在键盘的位置。