限制UITextView中的光标移动

时间:2013-08-27 06:15:56

标签: iphone ios uitextview

我有一个自定义(子类)UITextView,其中继承了标准UITextView的所有属性。

用户可以编写,删除,剪切,复制,粘贴等。我想做的是将光标移动限制在文本视图中的特定位置,这样,用户可以更改光标位置(textView.selectedRange.location)仅限于某一点,因为超出该点的文本应该是非用户可编辑的。我通过覆盖textViewDidChangeSelection方法成功处理了单击事件。但是长按时光标仍会移动到超出所需点的文本(放大镜出现时)。

是否有办法在放大镜出现后限制光标移动,以使其保持在所需的子范围内?

1 个答案:

答案 0 :(得分:1)

终于解决了它。

- (CGRect) caretRectForPosition:(UITextPosition *)position{

if (self.selectedRange.location > desiredLength)
    self.selectedRange = NSMakeRange(desiredLength, self.selectedRange.length);

return [super caretRectForPosition:position];
}

每次移动光标时都会调用此函数,而不管UITextView

中发生了什么。