0

これは特定のバグではなく、何かを行う方法がわからないことに関するものです。

私は NSTextView を持っており、ユーザーがテキスト ビューの特定の部分をクリックしたときに、特定の範囲のテキストの背景をペイントする必要があります。私はこれを試しましたが、テキストの前景色が失われたり、背景が範囲全体に及ばないことがあります。

NSLayoutManager *layoutManager = [myTextView layoutManager];
[layoutManager removeTemporaryAttribute:NSBackgroundColorAttributeName
                      forCharacterRange:range];
[[myTextView layoutManager] setTemporaryAttributes:attributes 
                                 forCharacterRange:range];

簡単にするために、 range は常に有効な文字列であると仮定します (これは私のテスト環境にあります)。

4

1 に答える 1

2

あなたが投稿したコードは私には正しいようです。

テキストの前景色が失われることがある

このフォアグラウンド カラーは、一時的な属性を使用していますか? -setTemporaryAttributes:forCharacterRange: set を( に追加するのではなく) 指定した範囲の一時的なテキスト属性辞書を使用することに注意してください(追加については を参照-addTemporaryAttributes:forCharacterRange:してください)。

または背景が範囲全体に及んでいない

コードの残りの部分を確認せずに私が提案できる唯一のことはrange、これが発生したときに値が正しいことを確認することです。NSLog使用する直前に試してみて、問題を再現した直後にログを確認してください。

また、背景色を一時属性に設定した後、コードの他の場所でこの範囲の一部からその属性を削除していないことを確認することもできます。

于 2010-05-11T23:02:56.397 に答える