2013-08-27 156 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