1

私が Mac OSX 用に構築している製品では、10.5、10.6、および 10.7 をサポートする必要があります。エディターとして NSTextView を使用しています。テキストと画像の両方を表示するために使用します。ハイライトについての要件があります。これは、MS Word とまったく同じように機能する必要があります。MS Word では、範囲を選択して黄色に変更できます。

setMarkedTextAttributes: を使用して同じことを行いましたが、インライン画像では機能しませんでした。そこで、LayoutManager を使用して背景色を設定しようとしましたが、どちらも機能していないようです。

強調表示に関する追加のポイントはトグルです。そのため、同じ範囲のテキストを選択して再度強調表示すると、強調表示が解除されます。これを行うために、すべての NSRange をリストに保存し、強調表示されているかどうかを確認しています。私は何か間違ったことをしていると感じています。だから私はNSRectを取得しようとしていて、色を適用しようとしています.

4

1 に答える 1

3

NSAttributedString でその範囲の背景色を設定します。

NSMutableAttributedString *mattrstg = [textView textStorage];
[mattrstg addAttribute:NSBackgroundColorAttributeName value:colorHighlighter range:range];

既存の属性は、ハイライトされているものとハイライトされていないものの記録になります。したがって、ハイライトを切り替えるには、次のことができます

[mattrstg enumerateAttribute:NSBackgroundColorAttributeName 
          inRange:rangeToChange 
          options:0 usingBlock:^(id value, NSRange range, BOOL *stop) { 
              if (value) {
                  [mattrstg removeAttribute:NSBackgroundColorAttributeName range:range]; 
              } else {
                  [mattrstg addAttribute:NSBackgroundColorAttributeName value:colorHighlighter range:range]; 
              }
          }];
于 2012-04-27T18:55:58.680 に答える