2017-04-26 15 views
1

我想要获得UITextView中的目前插入符号的位置为CGRect,但似乎没有任何信息。即使是the official documentation,我也无法想象如何利用这种方法并找到解释。现在我可以知道在UITextView中获取偏移量的方法,而不是CGRect。但是,我真的很想知道CGRect如何获得目前插页的CGRect

任何意见,应高度赞赏。 谢谢。

+0

这是很不清楚你在问什么。链接到的文档中的函数已经返回一个'CGRect'? – Oskar

+0

对不起,我的解释还不够,但是对于position:UITextPosition'的参数是什么样的?我应该通过这种方法?从某种意义上说,没有测量。现在我正在试验它。但是,你知道吗? –

+0

http://stackoverflow.com/questions/9126709/create-uitextrange-from-nsrange?那是你在找什么? “UITextPosition”和“UITextView”之间的链接? – Larme

回答

1

试试这个:

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参数代表文本容器中的位置;换句话说,它是在文本显示视图中对支持字符串的索引。

+0

谢谢。我试图解决的问题已经解决,但我仍然不清楚。在你的最后一句话中,究竟是“文本容器”?而且我也无法理解'后援字符串'的含义。你能解释一下吗? –

+0

@KazuyaTomita **支持字符串**存储由文本视图显示的实际文本,*独立*显示当前文本在屏幕中的显示方式(例如,视图宽度,视图高度,线条数量等) 。 'UITextPosition'提供了这个支持字符串的位置/索引。例如:如果文本视图变宽,文本布局可能会使用更少的行改变*,但是*给定的'UITextPosition'索引shoild保留相同。 –

+0

你是指什么意思?它是否像一个数组?你如何将这些索引分配给你解释的支持字符串? –

-2
//rect is an object of CGRect 
var rect = TextView.frame 
+0

我想知道插入符号的CGRect。它似乎不工作。 –