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 setText:
- (void)setText:(NSString *)text
{
[super setText:text];
[self textViewDidChange:nil];
}
ありがとう!