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

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

  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)
}

构建你的互联网档案

MarkMark

MarkMark 是一款全新的应用程序,专为帮助你收集和整理文章、网站和各类网页而设计。它不仅仅是一个书签应用或稍后阅读应用,而是超越了这些功能。

No Comment

Leave a Comment