2009-09-21 12 views

答えて

8

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

どのように行うのかを説明するgreat post by David Sinclair at Dejal Systemsがあります。

+0

ありがとうございます。私はそれを探し始めるべきか分からなかった。それは素晴らしい始まりです。 – goo

+0

うわー、この記事は2007年に書かれています...それはTextViewの新しいiOS 7 TextKit実装にも当てはまりますか? – fatuhoku

+0

この記事はMacOS用に書かれています。 iOSの最新のものは何ですか? – fatuhoku

4

私はトークンのカスタムセルクラスを使用して簡単なアプローチを考え出し:

  1. NSTextAttachmentCellを継承し、セルのクラスを書いて、あなたのNSTextViewにトークンを表すクラスになります
    - (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
    を再実装。
    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の概念を見ても役に立つかもしれません。彼はドラッグアンドドロップを実装するための良いアプローチを描いています。コピー貼り付け機能。

+2

NSTextAttachmentCellクラスがないiOSではどうですか? – fatuhoku

関連する問題