クリップボードにコピーする : Objective-C プログラミング

PROGRAM


クリップボードにコピーする

iOS アプリで、クリップボードにデータをコピーしたいときは UIPasteboard を使います。

たとえば NSString 型の変数 string に格納されているテキストをクリップボードにコピーしたい場合は次のようにします。

// テキストをクリップボードにコピーします。

[[UIPasteboard generalPasteboard] setValue:string forPasteboardType:@"public.text"];

コピー時に使用できるメソッド

先ほどは setValue:forPasteboardType: メソッドを使いましたが、この他にもクリップボードに値をコピーするメソッドが用意されています。

setValue:forPasteboardType: NSString, NSArray, NSDictionary, NSDate, NSNumber, UIImage, NSURL 型の値を、その種類を指定してクリップボードにコピーします。
setData:forPasteboardType: NSData 型の値を、その種類を指定してクリップボードにコピーします。

pasteboardType

コピーするときに指定する pasteboardType は、UTI (Uniform Type Identifiers) という形式の文字列で指定します。

UTI については Uniform Type Identifiers Reference: System-Declared Uniform Type Identifiers にも紹介がありました。

 

この中で、使えそうなものをピックアップしてみます。

これ以外にもたくさん定義されていますけど、コピーするデータを他のアプリでどんな用途で使ってもらいたいかを考えれば、複雑なアプリを作るのでなければ、実際に使う UTI 形式はそれほど多くなさそうです。

テキスト形式

public.text シンプルなテキストから、HTML や RTF のようなマークアップを含むテキストデータを意味します。
public.plain-text 書式を含まないシンプルなテキストを意味します。
public.utf8-plain-text UTF8 エンコードされた、書式を含まないシンプルなテキストを意味します。
public.html HTML 形式を意味します。
public.xml XML 形式を意味します。
public.url URL 形式を意味します。

文書データ

public.content 全ての文書コンテンツを意味します。このうちの特に PDF のようなテキストと特殊フォーマットデータを含むコンテンツを意味する public.composite-content という形式もあります。

映像・音楽

public.image 画像を意味します。他にも public.fax, public.jpeg, public.png といった形式に特化した UTI も用意されています。
public.audiovisual-content さまざまな映像・音声を意味する UTI です。
public.movie 動画を表す UTI です。より具体的な public.avi や public.mpeg といった UTI もあります。
public.audio 音声を表す UTI です。より具体的な public.ulaw-audio や public.aiff-audio といった UTI もあります。

プログラミング

public.source-code ソースコードを意味します。
public.c-source C ソースコードを意味します。他のも Objective-C 言語を表す public.objective-c-source や C ヘッダーを意味する public.c-header など、様々な言語用の UTI も用意されています。
public.script スクリプトコードを意味します。他にも public.php-script など、スクリプト言語に特化した UTI も用意されています。

汎用的な形式

public.data バイトストリームデータを意味します。
public.archive 圧縮ファイルを意味します。

独自の UTI を定義するには

UTI は "public" で始まるもののような Apple が用意したもの以外にも、自分で独自に定義できます。

文字列で自由に設定できますけど、次のような自分が所有するドメインを逆に並べて記載する方法で定義するのが推奨されています。

jp.ez-net.document

独自の UTI を定義できても、それを使ったクリップボードをどう使うかは使う側次第なので、独自に UTI を定義する場面はあまりないかもしれません。

[ もどる ]