光标未显示在UITextView中

时间:2014-01-06 21:10:03

标签: ios iphone ipad uitextfield uitextview

有人能想到闪烁光标不会出现在UITextView中的原因吗?我有一个自定义控件,它只是UIView的子类,并且它有一个UITextView,但是当它获得焦点时光标不会出现。键盘出现,键入时显示文字,但没有光标,我无法弄清楚原因。

有什么想法吗?...

9 个答案:

答案 0 :(得分:195)

您可能更改了自定义UITextView中的色调颜色。如果色调颜色与背景颜色(通常为白色)相同,则它将显示为不可见。

答案 1 :(得分:6)

您可能无法正确设置组件的contentSize和/或框架,因此它太小而无法显示或控件不在屏幕之外。请进入模拟器Debug->Color Blended Layers以查看这些值是否设置正确。

修改

使用新的Xcodes(可能在Xcode 6中引入),您可以通过单击“Debug View Hierarchy”调试此类问题(它是底栏上的图标之一)

答案 2 :(得分:2)

我改变了所有UITextView的色调,并且光标开始在下一个版本中显示。

答案 3 :(得分:2)

文本字段显示光标,但是您无法看到颜色,只是因为文本字段的色调颜色设置为默认值,最可能就像我的情况一样。 只需在故事板中选择textField并选择您希望的链接颜色即可。请参阅附件中的图片。

enter image description here

答案 4 :(得分:1)

简单的解决方法似乎可以通过引入延迟然后调用firstResponder来实现,如下所示:

-(void)begin{

    [self performSelector:@selector(first) withObject:nil afterDelay:0.01f];
}
-(void)first{

    [tf becomeFirstResponder];
}

答案 5 :(得分:1)

就我而言,我使用becomeFirstResponder方法调用viewDidLoad。我把电话移到了viewDidAppear,这对我有用。

答案 6 :(得分:0)

在我的情况下,上述解决方案不起作用。在我的情况下,问题是,当UIView的{​​{1}}并非{{}时,充当游标的isOpaque已将false设置为UITableViewCell 1}}。这似乎只发生在我尚未触底的比赛条件下。

FWIW这是我调试方法:

  1. 选择您的selectionStyle
  2. 打开“调试视图层次结构”。您应该看到none可以将光标表示在正确的位置,但是它不会出现在UI中。
  3. 右键单击光标的UITextFieldView,然后选择“打印说明...”。描述指示UIView

不幸的是,拥有此UIView的{​​{1}}类是私有的,因此没有以编程方式更新OPAQUE=NO的非hacky方法。

这似乎并不是每个实现中的问题,但是,这是我的观点之间的关系。

我的文本视图委托

UITextSelectionView

和我的表代表:

UIView

答案 7 :(得分:0)

对我来说,问题是由将UITextField嵌入UIToolbar中引起的。将容器替换为简单的UIView后,光标再次起作用。

答案 8 :(得分:0)

对我来说这不是 tintColor,它是由覆盖 caretRect 方法引起的。删除此方法解决了我的情况

open override func caretRect(for position: UITextPosition) -> CGRect {
       return CGRect.zero
   }