【问题标题】:How to reset attributes in NSTextStorage如何重置 NSTextStorage 中的属性
【发布时间】:2023-03-20 00:56:01
【问题描述】:

我正在尝试 iOS 的文本解析器。我有一些粗体、斜体、突出显示等语法。我在UITextView 中设置了一个NSTextStorage 实例来监视更改并设置正确的属性。如果我用文本预加载UITextView,效果会很好。

但是,当我输入时,假设我输入了这样的内容

==a==

效果很好,它突出显示黄色,一切都很好。但是,如果我将光标放在最后一个 == 旁边并开始输入以创建如下内容:

==a==hello my name is...

然后文本的其余部分也会突出显示。

我知道我使用的正则表达式不是问题,因为如果我用该文本预填充 UITextView,它会正确解析它。

问题:所以我需要帮助是将当前光标位置重置为无文本属性。我不知道该怎么做,因为如果它位于文本视图的末尾,我将无法继续前进,因为那时我会收到 NSRangeException

谢谢!

【问题讨论】:

    标签: ios objective-c regex nsattributedstring nstextstorage


    【解决方案1】:

    我想通了,你要做的是在delegate 中为UITextView 实现textViewDidChange: 方法并设置typingAttributes

    像这样:

    - (void)textViewDidChange:(UITextView *)textView {
        textview.typingAttributes = @{...};
    }
    

    现在每次文本更新时,它都会重置为默认属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 2015-10-07
      • 1970-01-01
      • 2013-12-14
      相关资源
      最近更新 更多