我有一个自定义(子类)UITextView
,其中继承了标准UITextView
的所有属性。
用户可以编写,删除,剪切,复制,粘贴等。我想做的是将光标移动限制在文本视图中的特定位置,这样,用户可以更改光标位置(textView.selectedRange.location
)仅限于某一点,因为超出该点的文本应该是非用户可编辑的。我通过覆盖textViewDidChangeSelection
方法成功处理了单击事件。但是长按时光标仍会移动到超出所需点的文本(放大镜出现时)。
是否有办法在放大镜出现后限制光标移动,以使其保持在所需的子范围内?
答案 0 :(得分:1)
终于解决了它。
- (CGRect) caretRectForPosition:(UITextPosition *)position{
if (self.selectedRange.location > desiredLength)
self.selectedRange = NSMakeRange(desiredLength, self.selectedRange.length);
return [super caretRectForPosition:position];
}
每次移动光标时都会调用此函数,而不管UITextView