UITextView
当用户键入或调用该方法时,我试图解析字符串的某些部分setText:
,然后将其设置NSAttributedString
回文本视图。但是,在我当前的实现中,这会导致无限递归循环。由于设置新的属性文本会导致文本更改(并触发通知),然后我重新解析文本。
有人建议我使用某种标志,所以当我解析和设置文本时,我不会继续这样做。尽管这似乎不是最佳解决方案。这是我的代码片段...
CustomTextView.h(UITextView 子类)
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewDidChange:) name:NSTextViewTextDidChangeNotification object:self];
CustomTextView textViewDidChange:
- (void)textViewDidChange:(NSNotification *)notification;
{
__block NSString *string = self.text;
dispatch_async(parserQueue, ^{
NSAttributedString *parsedString = [self parseAttributesForString:string];
dispatch_async(dispatch_get_main_queue(), ^{
[self setAttributedText:parsedString];
});
});
}
CustomTextView 设置文本:
- (void)setText:(NSString *)text
{
[super setText:text];
[self textViewDidChange:nil];
}
谢谢!