UITextView在UITableViewCell中如何滚动表视图以在键入时保持光标可见

时间:2016-01-06 19:59:00

标签: ios swift uitableview uitextview

我有一个包含UITextView的自定义UITableViewCell。细胞相当大。如何自动滚动表格以确保当前选择点始终可见?

请注意,UITextView是单元格的大小,因此不会自动进行自动滚动。

我可以在selectedTextRange上调用firstRectForRange,但是如果插入点在末尾则不起作用(对于CGRect,你得到inf,inf,0,0)。如果我有矩形,我可以计算表中的偏移量并调整其滚动内容偏移量。有没有一种好方法可以做到这一点,或者只是在弄乱contentOffset?

2 个答案:

答案 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: