β

iOS: UITextView 如何取得光标(Caret)当前位置

I'm TualatriX 105 阅读

拿到光标的位置可以做很多事,比如在弹起键盘的时候,如果光标被盖住了,则滚动到光标所在位置,这里需要有三个步骤来达到:

  1. 通过 selectedTextRange 得到当前 UITextView 选中的文字的范围,如果没选中文字,则会代表光标(Caret)当前的位置,如果该值为 nil,说明即没有选中文字,也没有光标(可能内容为空);
  2. 得到 selectedTextRange 的位置以后,就可以调用 careRect(for:) 方法来得到光标的 Rect 了;
  3. 最后调用 scrollRectToVisible 就可以滚动到相应位置。

示例代码如下:

if let selectedTextRange = self.textView.selectedTextRange {
        let caretRect = self.textView.caretRect(for: selectedTextRange.start)
        self.textView.scrollRectToVisible(caretRect, animated: false)
}

本站架设于 Linode 东京机房

作者:I'm TualatriX
Hello! This is TualatriX's blog
原文地址:iOS: UITextView 如何取得光标(Caret)当前位置, 感谢原作者分享。

发表评论