有人能想到闪烁的光标不会出现在屏幕中的原因UITextView
吗?我有一个自定义控件,它只是它的一个子类,UIView
并且其中有一个UITextView
,但是当它获得焦点时,光标不会出现。出现键盘,并且在您键入时显示文本,但是没有光标,我不知道为什么。
有什么想法吗?...
有人能想到闪烁的光标不会出现在屏幕中的原因UITextView
吗?我有一个自定义控件,它只是它的一个子类,UIView
并且其中有一个UITextView
,但是当它获得焦点时,光标不会出现。出现键盘,并且在您键入时显示文本,但是没有光标,我不知道为什么。
有什么想法吗?...
Answers:
您可能已在自定义UITextView中更改了颜色颜色。如果色调颜色与背景颜色相同(通常为白色),则它将不可见。
您可能为组件设置了不正确的contentSize
和和/或框架,以至于它太小而看不见或控件不在屏幕上。请进入模拟器以Debug->Color Blended Layers
查看这些值是否设置正确。
编辑:
使用新的Xcode(可能是Xcode 6中引入的),您可以通过单击“ Debug View Hierarchy”(它是底部栏中的图标之一)来调试此类问题。
简单的解决方法似乎可以通过引入延迟然后调用firstResponder来工作,如下所示:
-(void)begin{
[self performSelector:@selector(first) withObject:nil afterDelay:0.01f];
}
-(void)first{
[tf becomeFirstResponder];
}
就我而言,我调用becomeFirstResponder
了一个viewDidLoad
方法。我将电话拨入viewDidAppear
,它对我有用。
上面的解决方案不适用于我的情况。在我的情况的问题是,UIView
当光标已经充当isOpaque
设置为false
当UITableViewCell
的selectionStyle
是什么,但none
。这似乎只发生在我尚未触底的比赛条件下。
FWIW这是我调试的方法:
UITextFieldView
UIView
将光标指示在正确位置的,但它不会出现在UI中。UIView
然后选择“打印说明...”。描述指示OPAQUE=NO
不幸的是,UITextSelectionView
拥有此类的类UIView
是私有的,因此没有以编程方式更新的非hacky方法isOpaque
。
这似乎并不是每个实现中的问题,但是,这是我的观点之间的关系。
我的文字检视代表
extension FooViewController: UITextViewDelegate {
private func updateSelection(selectedIndex indexPath: IndexPath) {
if let oldSelected = self.table.indexPathForSelectedRow {
tableDelegate.tableView(table, didDeselectRowAt: oldSelected)
}
tableDelegate.tableView(table, didSelectRowAt: indexPath)
}
func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
guard let rowCell = getParentCell(forTextView: textView), // loops through table row cells
!rowCell.isSelected,
let indexPath = self.table.indexPath(for: rowCell)
else { return true }
updateSelection(selectedIndex: indexPath)
return false
}
和我的表代表:
class TableViewDelegate: NSObject, UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.selectRow(at: indexPath, animated: false, scrollPosition: UITableView.ScrollPosition.none)
}
}