선택을 통해 내 UIText보기의 속성있는 텍스트 속성을 설정하려고합니다. 거의 작동합니다. 아래의 빨간색 글꼴 색상으로 텍스트를 설정하는 작업입니다. 가끔씩 작동하지만 종종 오류가 발생합니다.attributedText, NSRangeException 오류 설정
Terminating app due to uncaught exception 'NSRangeException', reason: 'NSMutableRLEArray objectAtIndex:effectiveRange:: Out of bounds'
텍스트보기에 선택한 문자 수보다 많은 문자가있는 경우에도 이런 현상이 발생합니다.
- (IBAction)setText:(id)sender {
NSMutableAttributedString * string = [[NSMutableAttributedString alloc] initWithAttributedString:myTextView.attributedText];
[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(p1,p2)];
myTextView.attributedText = string;
}
p1과 p2는 선택한 텍스트의 시작과 끝입니다. 그들은 예상대로 작동하는 것 같다 아래의 코드로 생성됩니다
- (void)textViewDidChangeSelection:(UITextView *)textView {
UITextRange *selectedRange = [myTextView selectedTextRange];
p1 = [myTextView offsetFromPosition:myTextView.beginningOfDocument toPosition:[selectedRange start]];
p2 = [myTextView offsetFromPosition:myTextView.beginningOfDocument toPosition:[selectedRange end]];
}
편집 : 나는의 borrrden 코멘트 @ 읽은 후 문제를 해결.NSMakeRange(p1,p2)]
대신 NSMakeRange(p1,p2-p1)]
을 사용하고 있습니다.
오류를 재현하지 못했습니다. 그것이 발생하는 상황을 좁힐 수 있습니까? – Matthias
왜'selectedTextRange'를 사용하고 있습니까? 그것은'selectedRange'가 훨씬 더 쉬울 것 같습니다. – borrrden
에 관계없이, NSMakeRange는 start와 ** length의 매개 변수를 취합니다 ** 시작과 끝은 아닙니다. – borrrden