我想获得当前插入符号在UITextView中的位置,但似乎没有任何信息。即使the official documentation,我也无法想象如何利用这种方法找到解释。现在我可以知道如何在CGRect而不是CGRect中获得偏移量。但是,我真的很想知道。
任何评论都应受到高度赞赏。
谢谢。

最佳答案

试试这个:

extension UITextView {
    var caret: CGRect? {
        guard let selectedTextRange = self.selectedTextRange else { return nil }
        return self.caretRect(for: selectedTextRange.end)
    }
}

像这样使用:
let textView: UITextView = ...
if let caret = textView.caret {
    // Do your thing here.
} else {
    // Caret is undefined.
}

顺便说一句,您的思路是正确的:—)上述解决方案基于您刚才提到的UITextInput方法:
func caretRect(for position: UITextPosition) -> CGRect

返回用于在给定插入点处绘制插入符号的矩形。
UITextPosition参数表示文本容器中的一个位置;换句话说,它是文本显示视图中后备字符串的索引。

10-06 07:49