【Swift】画像をクリップボードにコピーしてペーストするまで


画像をコピーしてペーストする方法を調べた時に、下記のような方法をみつけたが、これだとうまく動かない。

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


投稿者: しんじ

ベトナムでオフショア開発会社経営中 www.bit-vietnam.com 。サービス開発が趣味。web系は主にPHPで、スマホアプリはswiftで。最近はエンジニア向けの英語勉強webアプリ エングリッシュ e-lish.io を作りました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)