申し訳ありませんが、受け入れられた答えは誤解を招く/間違っています。これは、ペーストボードから既存の値をクリアしません。
の2番目の引数setValue:forPasteboardType:
は、アイテムの文字列識別子です。ドキュメントが示唆しているように、それはUTI(MobileCoreServicesを見てください)またはユーザー定義の文字列である可能性があります。
受け入れられた回答のメソッド呼び出しは、UIPasteboardNameGeneral
ペーストボード自体全体の識別子であるwhichを使用します(辞書の配列内の項目がの場合、1つのキーではありません[UIPasteboard items]
)。ペーストボードにはそのキーのアイテムが含まれていないため、その呼び出しはノーオペレーションになります。これを自分で確認するのは簡単です。[[UIPasteboard generalPasteboard] name]
に等しいUIPasteboardNameGeneral
。また、containsPasteboardTypes:
そのキーを使用すると、が返されNO
ます。
ここで、iOS 6で何が起こっているのかを説明します。AppleはkUTTypePNG
、ペーストボードに保存されている画像データのキーとしてUTI(たとえば)を使用している可能性があります。彼らは、そのキーに設定されている値が実際にNSDataであることを確認している可能性があります(そうでnil
はありません)。
あなたの難問に対処するために、私は次のいずれかを提案することができます:
- クリップボードに入れたコンテンツを他のアプリケーションと共有したくない場合は、を使用してアプリケーション固有のクリップボードを作成できます。
+ (UIPasteboard *)pasteboardWithName:(NSString *)pasteboardName create:(BOOL)create
- このクリップボードの内容は、アプリケーションのみがアクセスでき、アプリケーションが削除されると削除されます。
persistent
プロパティをYESに設定しない限り、アプリが終了するとクリップボードの内容がクリアされます。
- 一般的なクリップボードにアクセスすることで、他のアプリケーションによってクリップボードに配置されたアイテムに引き続きアクセスできます。
- どうしても内容をクリアする必要がある場合(記載されている制限がある場合)、別の有効なイメージを設定してみてください。特定のクリップボードアイテムに複数のキーが存在する可能性があるため、このアプローチには疑問があります。
お役に立てれば。