Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 我是否可以为iOS创建自定义文本字段和键盘,而不创建子类化UIControl?_Objective C_Keyboard_Custom Controls_Uitextfield_Subclass - Fatal编程技术网

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

Objective c 我是否可以为iOS创建自定义文本字段和键盘,而不创建子类化UIControl?,objective-c,keyboard,custom-controls,uitextfield,subclass,Objective C,Keyboard,Custom Controls,Uitextfield,Subclass,我的应用程序将要求用户输入化学公式(H2O,Na^2+),由于下标和上标可能会让用户对键入过程感到困惑,我决定制作一个自定义键盘 当用户键入一个数字作为下标时,它应该作为下标显示在屏幕上。我发现的唯一方法是使用NSAttributedString,它显然只适用于CoreText。因为我不能在UITextField中包含CoreText,所以我还需要创建一个自定义文本字段。我在查看UITextView,但文档中指出字体样式必须在整个文本中保持一致,这意味着我不能有下标 我是否需要为这两种情况划分U

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

当用户键入一个数字作为下标时,它应该作为下标显示在屏幕上。我发现的唯一方法是使用NSAttributedString,它显然只适用于CoreText。因为我不能在UITextField中包含CoreText,所以我还需要创建一个自定义文本字段。我在查看UITextView,但文档中指出字体样式必须在整个文本中保持一致,这意味着我不能有下标


我是否需要为这两种情况划分UIControl子类并从头开始?或者我可以从一个已经具有键盘/textfield某些属性的替代类开始吗?

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

但是,通过采用
UIKeyInput
协议,您可以轻松支持键盘输入,覆盖
可以成为第一响应程序
,因此它返回
YES
,并添加
UIAPTgestureRecognitor

    [self addGestureRecognizer:
     [[UITapGestureRecognizer alloc] initWithTarget:self
                                             action:@selector(becomeFirstResponder)]];
如果您希望允许用户选择文本范围并使用自动更正,那么就更难了:您需要采用协议
uiteImport

自定义键盘非常简单:

  • 或者,您可以覆盖
    inputAccessoryView
    ,该视图允许您显示连接到键盘的自定义视图
  • 或者,您重写
    inputView
    ,这样它将返回一个将显示在键盘位置的自定义视图