画像をコピーしてペーストする方法を調べた時に、下記のような方法をみつけたが、これだとうまく動かない。
let image = UIImage(named: "logo.jpg") UIPasteboard.generalPasteboard().image = image;
なので、下記のような方法で実装する。
カスタムキーボードから利用する際は、予めフルアクセスの許可をとる必要があるので、権限を確認する処理も追記した。
//タップイベント func onClickMyButton(sender: UIButton) { if(!self.isOpenAccessGranted()){ //フルアクセスが許可されていない場合。 println("フルアクセスが許可されていません") } if let textDocumentProxy = self.textDocumentProxy as? UITextDocumentProxy { autoreleasepool { let image = UIImage(named: "logo.jpg") //the Pasteboard is nil if full access is not granted let pbWrapped: UIPasteboard? = UIPasteboard.generalPasteboard() if let pb = pbWrapped { var type = UIPasteboardTypeListImage[0] as! String if (count(type) > 0) && (image != nil) { pb.setData(UIImagePNGRepresentation(image), forPasteboardType: type) var readDataWrapped: NSData? = pb.dataForPasteboardType(type) if let readData = readDataWrapped { var readImage = UIImage(data: readData, scale: 2) println("\(image) == \(pb.image) == \(readImage)") } } } } } } //フルアクセスがきちんと許可されているか確認するためのメソッド func isOpenAccessGranted() -> Bool { return UIPasteboard.generalPasteboard().isKindOfClass(UIPasteboard) }
参考:http://stackoverflow.com/questions/27307156/copy-image-with-uipasteboard-swift