NSTextViewに添付属性が追加されていることを確認するにはどうすればよいですか?
-
06-07-2019 - |
質問
アプリケーションの特定のNSTextView添付ファイルのセマンティクスのため、テキストストレージに挿入または削除されるタイミングを知りたいです。
NS置換文字列はNSAttributedStringではなくNSStringであるため、添付ファイルが挿入されているかどうかをこのメソッドから確認する方法はありません。ドキュメントは、「属性のみ」が「文字列のみ」の場合、文字列がnilである可能性があるとさえ述べています編集中です。
質問は、添付ファイルが挿入されるときに表示するための最適なオーバーライドポイントは何ですか?またはおそらく便利:属性が変更されているときに表示するのに最適なオーバーライドポイントは何ですか?
更新:前述のように、添付ファイルが挿入されているかどうかを知る方法はありませんでした。 「ある」と言うことができると指摘されています。文字列には魔法のNSAttachmentCharacterが含まれるため、添付ファイルが含まれます。ただし、編集が完了するまで添付ファイルに関する特定の情報はありません。
解決
NSTextStorageデリゲートメソッド-textStorageDidProcessEditing:を見てみましょう。このメソッドは、基になるテキストストレージに変更が加えられるたびに呼び出す必要があります。次に、-editedRange、-editedMask、および-changeInLengthメソッドを使用して、テキストストレージのどのセクションが変更されたかを判断し、関心のある添付ファイルがないかその範囲を調べます。
他のヒント
次の2つの NSTextStorage
デリゲートメソッドをご覧ください。
- (void)textStorageWillProcessEditing:(NSNotification *)notification;
/* Delegate can change the characters or attributes */
- (void)textStorageDidProcessEditing:(NSNotification *)notification;
/* Delegate can change the attributes */
textStorageWill / DidProcessEditing
内で、-[NSTextStorage EditorialMask]
および-[NSTextStorageeditedRange]
を呼び出して、何が変更されたかを調べることができます。それに応じてアクションを実行します。