概要
これまでだと、以下の様にする事でクリップボードに文字列を渡すことが出来ました。
let pasteboard: UIPasteboard = UIPasteboard.general pasteboard.setValue("渡したい文字列", forPasteboardType: "public.text")
ただ、このやり方はiOS11からは出来なくなります。
実際にこのやり方で実装されたアプリでコピー&ペーストを行おうと、例えばSafariの検索窓とかに貼り付けても何も起きません。
原因と解決策
元々Appleのドキュメントにも、setVaueはObjectをクリップボードに渡すと記載されているので、あるべき姿となった形でしょうか。
(stringオブジェクトを貼り付けたので、何も起きていない。)
試しに、冒頭の
let pasteboard: UIPasteboard = UIPasteboard.general pasteboard.setValue("渡したい文字列", forPasteboardType: "public.text")
を、標準のメモ帳に貼り付けると、以下のスクショのようになります。
では、解決策ですが、以下のように処理を変更するだけです。
let pasteboard: UIPasteboard = UIPasteboard.general pasteboard.string = "渡したい文字列"
見ての通り、UIPasteboardのstringに値を渡すだけで、これまで同等の機能を実現できます。
さいごに
最後に宣伝となってしまいますが、提供しているKeyHolderでも上記で記載した機能を利用しております。
もし興味があればダウンロード宜しくお願いします