1

どのタイプのデータがコピーされるのかを知る必要があるアプリケーションに取り組んでいますNSPasteBoard。ドキュメントから、ファイルのコンテンツをコピーするとNSPasteBoard、そのコンテンツがペーストボードサーバーに渡され、そこからシステム上のアプリケーションがそのデータにアクセスできることがわかりました。

ここで、ペースト ボード サーバーをポーリングし、ユーザーがテキスト コンテンツをコピーしたかどうかを判断します。テキスト コンテンツの場合、アプリケーションはそれらのデータを処理します。それ以外の場合は、写真、フォルダーなどの他のデータを無視します。


Apple のドキュメントからの調査結果

ドキュメントから、ペーストボードにデータを設定すると、setData typesできることがわかりました。しかし、システム上のテキスト コンテンツをコピーする場合、どのタイプのデータ型が設定されているかは 100% わかりません。dataTypeinsetDataメソッドのパラメータは ですNSString


さらなるガイダンスは非常に役に立ちます。

4

1 に答える 1

6

テキストをペーストボードにコピーする適切に設計されたアプリケーションは、ドキュメントにリストされている標準タイプのいずれかを使用する必要があります。

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSPasteboard_Class/Reference/Reference.html#//apple_ref/doc/uid/20000328-SW33

NSPasteboardTypeStringしたがって、またはのような標準的なテキストタイプのいくつかがNSPasteboardTypeRTFペーストボードに存在するかどうかを確認できます-[NSPasteboard availableTypeFromArray:]

アプリケーションは、さまざまな形式でペーストボードにデータを配置できます。たとえば、Safari でテキストをコピーすると、プレーン テキストとリッチ テキストの両方の表現が得られます。これは、あらゆる種類のアプリケーションをサポートする優れた方法です。アプリがリッチ テキストを貼り付けることができない場合、おそらくプレーン テキストを貼り付けることができるため、Safari は両方をコピーします。

ただし、問題の説明方法から、アプリケーションが複数のタイプをペーストボードにコピーするという事実は、テキストだけがコピーされたかどうかを判断するのがより困難になる可能性があります。たとえば、Safari で画像をコピーすると、画像データNSPasteboardTypeTIFFが にコピーされますが、URL も にコピーされNSPasteboardTypeStringます。そのため、(何を達成したいかによって異なりますが)、テキスト タイプの存在に加えて、NSPasteboardTypeTIFF などの特定のタイプがないことを確認して、有用なテキストがコピーされたかどうかを判断する必要があります。

ペーストボード上のすべてのデータを探索する優れた方法は、Apple の ClipboardViewer サンプル コードを使用することです。 /DTS40008825-イントロ-DontLinkElementID_2

于 2012-06-13T02:16:56.283 に答える