文章を範囲指定したうえでコピーを実行、ほかの位置に移動してペーストする、という作業の流れはコピー&ペースト、通称「コピペ」として一般用語化されています。iPhoneもコピペに対応していますが、メモアプリでコピーした文章は写真アプリにペーストできない、などのルールがあります。なぜなのか、気になりますよね。

メモアプリでコピーした文章を写真アプリにペーストできない理由は、「クリップボードに格納された情報のデータ型が異なる」ことにあります。iPhoneのシステム(iOS)では、クリップボードは「UIPasteboard」として存在し、そこを介しアプリ間でデータの受け渡しを行います。

UIPasteboardでは、コピー/カットによりデータを格納するとき「型」が付帯情報(プロパティ)として記録されます。型はテキストが「string」、画像が「image」、ハイパーリンクが張られるURLが「url」などいくつか定義されており、ペーストするときにはその判定が行われます。

たとえば、UIPasteboardからデータを取り出す(ペーストする)とき、都合で画像しか受け付けられないからテキストデータがペーストされては困るとアプリが判断した場合には、stringプロパティを持つデータは拒否されます。一方、テキストも画像も扱えるアプリの場合には、そのままペーストが実行されることになります。

なお、1回のコピーでUIPasteboardに保存されるデータは1つとはかぎりません。メモアプリで書式付きのテキストをコピーすると、文字情報そのもの(プレインテキスト)にくわえてリッチテキストフォーマットの情報などが同時に保存されることもあります。ペーストされる側のアプリによるデータの取捨選択も可能ですから、Aアプリでコピーした書体情報付きの文字列をBアプリへペーストしたら書体情報が失われた、という事態もありえます。

  • コピーしたデータがクリップボードに格納されると、画像やテキストなどの「型」で区別されます