12

NSTokenFieldのようなトークンを に追加するにはどうすればよいNStextViewですか?

4

2 に答える 2

11

これは実際には少し複雑です。「トークン」ごとにカスタムを作成し、NSTextAttachmentのに挿入する必要がありNSTextStorageますNSTextView

DejalSystemsにDavidSinclairによるすばらしい投稿があり、その方法を説明しています。

于 2009-09-21T22:07:32.790 に答える
4

トークンにカスタム セル クラスを使用する簡単な方法を見つけました。

  1. 継承NSTextAttachmentCellして再実装するセル クラスを作成
    - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
    します。これは、NSTextView.
  2. トークンを挿入するには、次の手順に従います。
    1. のインスタンスを作成しますNSTextAttachment
    2. 添付ファイルのセルをトークン セル クラスのインスタンスに設定します。
    3. その添付ファイルで属性付き文字列を作成します。
    4. 属性付き文字列をテキスト ビューに挿入します。

テキスト ビューにトークンを挿入するメソッドは次のようになります。

- (void)insertAttachmentCell:(NSTextAttachmentCell *)cell toTextView:(NSTextView *)textView
{
    NSTextAttachment *attachment = [NSTextAttachment new];
    [attachment setAttachmentCell:cell];
    [textView insertText:[NSAttributedString attributedStringWithAttachment:attachment]];
}

このアプローチは、 David Sinclairによるものよりもトークンに適しています。静的な画像ではなく動的なコンテンツ (トークン) を表示したいので、ファイル ラッパーを使用する必要はありません。
ただし、David の概念を見ると役立つ場合があります。彼は、ドラッグ アンド ドロップ応答を実装するための優れたアプローチを示しています。コピーペースト機能。

于 2013-03-10T09:32:51.607 に答える