2012-12-07 5 views
1

사용자가 입력 한 새 텍스트에 적용 할 서식을 검색하려고합니다. 커서가 위치를 가지고 있지만 텍스트 선택이 없음 (즉, 길이 = 0)을 의미합니다. typingAttributes를 쿼리 할 때마다, 그냥 로그하는 경우에도 앱이 다운됩니다. 디버그 Navigator에서 NSAttributedString typingAttributes가 충돌 함

Thread 1:EXC_BAD_ACCESS (code=2, address=0x4) 

일이 마지막 일

은 다음과 같습니다

WebCore::Frame::styleAtSelectionStart() const 

그리고 나는 selectedRange.length로 로그인하면 바로 그 전에, 내가

-[UITextView typingAttributes] 

를 참조 0보다 큰 , 괜찮을 것 같습니다. 내가 좀비와 가드 Malloc을 사용하여 실행 해봤지만 아무것도 보이지 않는다. 내 테스트 프로젝트에서

는 충돌이 즉시 UITextView가되면서 발생 firstResponder :

- (void)updateFormatButtons 
{  
    UITextView *problemTextView = [self synopsisTextView]; 
    NSRange selectedRange = [self getSelectedTextRange]; 
    if (selectedRange.length == 0) // No text selected 
    { 
    // HELP - Why does the following line cause a crash? 
    // NSLog(@"textViewFormatting options: %@", [problemTextView typingAttributes]); 
    } 
    else 
    { 
     NSLog(@"Some text selected"); // Fine here 
     NSLog(@"textViewFormatting options: %@", [problemTextView typingAttributes]); 
    } 
} 

선택한 범위에 따라 :

속성을 확인하기 위해 호출

- (void)textViewDidChangeSelection:(UITextView *)textView 
{ 
    [self updateFormatButtons]; 
} 

- (NSRange)getSelectedTextRange 
{ 
    NSRange rangeToReturn = NSMakeRange(NSNotFound, 0); 
    UITextView *textView = [self synopsisTextView]; 
    if ([textView isFirstResponder]) 
    { 
     rangeToReturn = [textView selectedRange]; 
    } 
    return rangeToReturn; 
} 

제안 해 주셨습니다.

답변

0

텍스트보기의 선택을 변경하면 typingAttributes 사전의 내용이 자동으로 지워지는 것으로 나타났습니다. 따라서 사전에 질의를하는 것은 일종의 갈등을 일으켰습니다. 전화하기 전에 지체를두면 다음과 같이 처리 된 것으로 보입니다.