2013-08-27 5 views
0

У меня есть пользовательский (подкласса) UITextView, где все свойства стандарта UITextView наследуются.Ограничить перемещение курсора в UITextView

Пользователь может записывать, удалять, вырезать, копировать, вставлять и т. Д. То, что я хотел бы сделать, это ограничить перемещение курсора в определенном месте в текстовом виде, так что пользователь может изменить позиции курсора (textView.selectedRange.location) до определенного момента, поскольку текст за пределами этой точки должен быть не редактируемый пользователем. Я успешно справился с этим при однократном событии, переопределив метод textViewDidChangeSelection. Но курсор по-прежнему перемещается к тексту за нужную точку при длительном нажатии (когда появляется лупа).

Есть ли способ ограничить перемещение курсора после появления лупы, чтобы сохранить его в нужном субдиапазоне?

+1

Вы должны копаться в [ 'UITextInput Protocol'] (https: // разработчик .apple.com/library/ios/documentation/uikit/reference/UITextInput_Protocol/Reference/Reference.html # // apple_ref/occ/intfp/UITextInput/selectedTextRange) – Bala

+1

Вы были правы. Протокол UITextInput' ... магический. – n00bProgrammer

+0

:) Я рад, что вы приняли мой комментарий в действии, и вы больше не программируете n00b.! – Bala

ответ

1

Наконец-то решил.

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

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

return [super caretRectForPosition:position]; 
} 

Используется эту функцию, как это называется каждый раз, когда курсор перемещается, независимо от того, что еще происходит в UITextView

Смежные вопросы