1
我正在尝试检测将对用户输入的新文本应用的格式。这意味着光标有一个位置,但没有文本选择(即长度= 0)。每次我尝试查询typingAttributes时,即使只是记录,应用程序也会崩溃。NSAttributedString typingAttributes导致崩溃
Thread 1:EXC_BAD_ACCESS (code=2, address=0x4)
在调试导航出现这种情况的最后一件事是:
WebCore::Frame::styleAtSelectionStart() const
而在此之前只是,我看到
-[UITextView typingAttributes]
如果我登录了selectedRange.length大于0 ,它似乎很好。我试过运行僵尸和Guard Malloc启用,但没有看到任何东西。
在我的测试项目,崩溃只要UITextView中变得发生firstResponder:
- (void)textViewDidChangeSelection:(UITextView *)textView
{
[self updateFormatButtons];
}
其中要求检查的属性:
- (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]);
}
}
根据所选择的范围:
- (NSRange)getSelectedTextRange
{
NSRange rangeToReturn = NSMakeRange(NSNotFound, 0);
UITextView *textView = [self synopsisTextView];
if ([textView isFirstResponder])
{
rangeToReturn = [textView selectedRange];
}
return rangeToReturn;
}
建议感激。