拿到光标的位置可以做很多事,比如在弹起键盘的时候,如果光标被盖住了,则滚动到光标所在位置,这里需要有三个步骤来达到:
- 通过
selectedTextRange
得到当前 UITextView 选中的文字的范围,如果没选中文字,则会代表光标(Caret)当前的位置,如果该值为 nil,说明即没有选中文字,也没有光标(可能内容为空); - 得到
selectedTextRange
的位置以后,就可以调用careRect(for:)
方法来得到光标的 Rect 了; - 最后调用
scrollRectToVisible
就可以滚动到相应位置。
示例代码如下:
if let selectedTextRange = self.textView.selectedTextRange {
let caretRect = self.textView.caretRect(for: selectedTextRange.start)
self.textView.scrollRectToVisible(caretRect, animated: false)
}