有人能想到闪烁光标不会出现在UITextView
中的原因吗?我有一个自定义控件,它只是UIView
的子类,并且它有一个UITextView
,但是当它获得焦点时光标不会出现。键盘出现,键入时显示文字,但没有光标,我无法弄清楚原因。
有什么想法吗?...
答案 0 :(得分:195)
您可能更改了自定义UITextView中的色调颜色。如果色调颜色与背景颜色(通常为白色)相同,则它将显示为不可见。
答案 1 :(得分:6)
您可能无法正确设置组件的contentSize
和/或框架,因此它太小而无法显示或控件不在屏幕之外。请进入模拟器Debug->Color Blended Layers
以查看这些值是否设置正确。
修改强>
使用新的Xcodes(可能在Xcode 6中引入),您可以通过单击“Debug View Hierarchy”调试此类问题(它是底栏上的图标之一)
答案 2 :(得分:2)
我改变了所有UITextView的色调,并且光标开始在下一个版本中显示。
答案 3 :(得分:2)
答案 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这是我调试方法:
selectionStyle
none
可以将光标表示在正确的位置,但是它不会出现在UI中。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
}