我有一个包含UITextView的自定义UITableViewCell。细胞相当大。如何自动滚动表格以确保当前选择点始终可见?
请注意,UITextView是单元格的大小,因此不会自动进行自动滚动。
我可以在selectedTextRange上调用firstRectForRange,但是如果插入点在末尾则不起作用(对于CGRect,你得到inf,inf,0,0)。如果我有矩形,我可以计算表中的偏移量并调整其滚动内容偏移量。有没有一种好方法可以做到这一点,或者只是在弄乱contentOffset?
答案 0 :(得分:2)
在textviewdidchange中使用它
if let confirmedTextViewCursorPosition = textView.selectedTextRange?.end {
let caretPosition = textView.caretRect(for: confirmedTextViewCursorPosition)
var textViewActualPosition = tableView.convert(caretPosition, from: textView.superview?.superview)
textViewActualPosition.origin.y += 20.0 // give the actual padding of textview inside the cell
tableView.scrollRectToVisible(textViewActualPosition, animated: false)
}
答案 1 :(得分:1)
运气好吗?我在完全相同的情况下遇到了麻烦。我目前正在做的是使用
获取插入位置的矩形[textView caretRectForPosition:textView.selectedTextRange.end]
然后尝试从
计算convertRect: fromView: