2013-03-20 31 views
7

私はテキストビューアのアプリを作っています。現在、非常に頻繁で正確なラインハンドリング能力が必要です。したがって、NSTextStorageクラスをサブクラス化したいと思います。しかし、新しいテキストストレージをNSTextViewに設定する方法が見つかりませんでした。私が見つけることができる唯一の方法は、NSTextViewでNSTextStorageを置き換える適切な方法は?

-[NSLayoutManager replaceTextStorage:] 

の方法でした。しかし、これが私が探していたものかどうかは混乱しています。 NSTextViewの代わりにリンクされたNSLayoutManagersのテキストストレージを置き換えるように見えるからです。

NSTextViewをサブクラス化し、-textStorageメソッドをオーバーライドすることも考えましたが、サブクラス化のためにクラスが設計されていない場合は、未定義の結果になります。

誰でもNSTextViewでカスタムNSTextStorageを使用しようとしましたか?これどうやってするの?またはこれは設計上禁止されていますか?

答えて

10

あなたはNSTextViewのストレージを変更するには、このような何かを行うことができます。

NSTextStorage *newStorage = [[NSTextStorage alloc] initWithString: @"test"]; 

[aTextView.layoutManager replaceTextStorage: newStorage]; 

NSTextStorageは、あなたが同じ方法のすべてでそれを操作することができNSMutableAttributedStringのサブクラスですので。