gpt4 book ai didi

objective-c - 当 UITextView 的文本更改时解析并创建 NSAttributedString

转载 作者:行者123 更新时间:2023-12-03 16:47:20 25 4
gpt4 key购买 nike

当用户在 UITextView 中键入内容或调用 setText: 方法时,我尝试解析字符串的某些部分,然后设置 NSAttributedString 返回 TextView 。然而,在我当前的实现中,这会导致无限递归循环。由于设置新的属性文本会导致文本发生更改(并触发通知),因此我会重新解析文本。

有人建议我使用某种标志,所以当我解析和设置文本时,我不会继续这样做。尽管这似乎不是最佳解决方案。这是我的代码片段...

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];
}

谢谢!

最佳答案

好吧,首先我将向属性文本添加一个观察者,而不是对类进行子类化并发布通知。接下来,我只需检查文本对象是什么类。我可以通过调用[text isKindOfClass:[NSString class]]来实现这一点。通过调用它,您可以知道该对象是否需要再次解析。

关于objective-c - 当 UITextView 的文本更改时解析并创建 NSAttributedString,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11913560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com