ImagePickerControllerで取得した値をCLImageEditorで編集するが、編集画面から戻った際に動作が出来ない
こんばんは、質問失礼致します。勉強不足で至らない点があると思いますが、よろしくお願い致します。
タイトルのようにカメラを起動させて撮影した後に取得した画像をCLImageEditorというライブラリで編集できるようにしているのですが、編集画面から戻ると操作が出来なくなってしまいます。調べてはいるのですが、あまりCLImageEditorに関しての日本語記事が少なく理解出来ないでいます。今現在 imagePickerController
メソッドで取得した値をCLImageEditorのインスタンス生成時に渡し、 pushViewController
メソッドで編集画面を起動させています。
編集画面ではNavigationBarが表示されていてleftItemのBackをタップすると撮影した画像の画面に戻りフリーズされてしまいます。
もし解決方法がお分かりの方がいらしたら教えていただきたいです。よろしくお願いいたします。
該当のソースコード
swift
1// 真ん中のタブはボタンとして扱う 2 tabBarController.setAction({ 3 // カメラを指定してピッカーを開く 4 // もしカメラが使えるかの判定関数 5 if UIImagePickerController.isSourceTypeAvailable(.camera) { 6 // UIImagePickerControllerのインスタンスを作成 7 let pickerController = UIImagePickerController() 8 // pickerControllerのsourceTypeを.cameraにする 9 pickerController.sourceType = .camera 10 // 写真を撮った後の関数にViewControllerを指定する 11 pickerController.delegate = self 12 // カメラをpresentメソッドで表示させる 13 self.present(pickerController, animated: true, completion: nil) 14 } 15 }, at: 1) 16 } 17 18 // 写真を撮影/選択した時に呼ばれるメソッド 19 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String: Any]) { 20 if info[UIImagePickerControllerOriginalImage] != nil { 21 // 撮影/選択された画像を取得する 22 let image = info[UIImagePickerControllerOriginalImage] as! UIImage 23 24 // 後でCLImageEditorライブラリで加工する 25 print("DEBUG_PRINT: image = (image)") 26 // CLImageEditorにimageを渡して、加工画面を起動する 27 let editor = CLImageEditor(image: image)! 28 editor.delegate = self 29 picker.pushViewController(editor, animated: true) 30 } 31 } 32 33 // キャンセルした時に呼ばれるDelegate 34 func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 35 // dismissメソッドで今開いている画面を閉じる 36 picker.dismiss(animated: true, completion: nil) 37 } 38 39 // CLImageEditorでキャンセルされた時にこのメソッドで前の画面に戻る 40 func imageEditorDidCancel(_ editor: CLImageEditor!) { 41 editor.dismiss(animated: true, completion: nil) 42 } 43 44 // CLImageEditorで加工が終わった時に呼ばれるメソッド 45 func imageEditor(_ editor: CLImageEditor!, didFinishEditingWith image: UIImage!) { 46 // 投稿の画面を開く 47 // PostviewControllerのNavigationControllerのidentifierに "Post"を設定する 48 let navigationController = self.storyboard?.instantiateViewController(withIdentifier: "Post") as! UINavigationController 49 50 let viewControllers = navigationController.viewControllers; 51 let postViewController = viewControllers[0] as! PostViewController; 52 53 postViewController.image = image! 54 editor.present(navigationController, animated: true, completion: nil) 55 } 56 57}
試したこと
CLImageEditorDidCancelというメソッドがあったので書いてみたのですがこのメソッドが呼ばれずにいます。そもそも画面上のどこにキャンセルが呼び出されるのか分かりせん。もしCLImageEditorの編集画面上にあるNavigationBarの動作を変更し、タップした時に撮影画面まで戻れればと考えたのですが、どのようなコードを書けばいいかも分かりません。もしStoryboard上にない画面の操作方法がお分かりでしたら教えていただきたいです。よろしくお願いいたします。
補足情報(FW/ツールのバージョンなど)
Xcode Version 9.2
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/06/21 17:31