NSTextFieldがあり、空白、キャリッジリターン、タブなどの非表示の文字を表示する機会をユーザーに提供したいと考えています。残念ながら、私はこれについてAppleのドキュメントに一言も見つかりませんでした。私はそれを探すときに正しい用語を使用していないと思います。
これを行う方法の手がかりはありますか?
NSTextFieldがあり、空白、キャリッジリターン、タブなどの非表示の文字を表示する機会をユーザーに提供したいと考えています。残念ながら、私はこれについてAppleのドキュメントに一言も見つかりませんでした。私はそれを探すときに正しい用語を使用していないと思います。
これを行う方法の手がかりはありますか?
まず、代わりにNStextViewを使用します。ここでは、関連するNSLayoutManagerコンポーネントとNSTextStorageコンポーネントが既に設定されています。次に、次の手順を実行することで、実行しようとしていることを実行できます。
NSATSTypesetterをサブクラス化して、オーバーライドして必要な文字のカスタムグリフを描画します。
-(void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(NSPoint)origin
- (NSRect)boundingBoxForControlGlyphAtIndex:(NSUInteger)glyphIndex forTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(NSRect)proposedRect glyphPosition:(NSPoint)glyphPosition characterIndex:(NSUInteger)charIndex
Subclass NSLayoutManager and set its type setter with the above one.
Then override:
-(void)drawGlyphsForGlyphRange:(NSRange)glyphsToShow atPoint:(NSPoint)origin
{
[self.typesetter drawGlyphsForGlyphRange:glyphsToShow atPoint:origin];
[super drawGlyphsForGlyphRange:glyphsToShow atPoint:origin];
}
NSTextViewのレイアウトマネージャーを上記のものに置き換えます。
[[textView textContainer] replaceLayoutManager:[[[MyLayoutManager alloc] init] autorelease]];
基本的に、NSLayoutManagerクラスとNSATSTypesetterクラスをチェックして、テキストのカスタム描画に関連するものがないかどうかを確認する必要があります。また、これに関する詳細なガイドがここにあります。