質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1995閲覧

写真選択後にフリーズしてしまう問題を解決したい

ttah

総合スコア35

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/25 00:15

現在の症状

写真選択後に切り抜き画面に移行直後↓のエラーメッセージが出て完了、キャンセルボタンが効かなくなります
切り抜きにはRSKImageCropperを使用しています

errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=query cancelled}

フリーズする画面
イメージ説明

やった事

以前は現在と同じコードで問題なく動いてました
直近で行ったことはbundle identifiersigningのteamの変更です
この2つ変更直前に問題なかったかは未確認です

コード

swift

1import RSKImageCropper 2 3class DataInput1: UIViewController, UINavigationControllerDelegate ,UIImagePickerControllerDelegate, UITextViewDelegate, UITextFieldDelegate, UIScrollViewDelegate{ 4 5 6 @IBAction func icon(_ sender: Any) { 7 8 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary){ 9 let pickerView = UIImagePickerController() 10 pickerView.sourceType = .photoLibrary 11 pickerView.delegate = self 12 self.present(pickerView, animated: true) 13 }} 14 15 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 16 17let image = info[.originalImage] as! UIImage 18 self.dismiss(animated: true) 19 20 let imageCropVC = RSKImageCropViewController(image: image, cropMode: .circle) 21 imageCropVC.moveAndScaleLabel.text = "切り取り範囲を選択" 22 imageCropVC.cancelButton.setTitle("キャンセル", for: .normal) 23 imageCropVC.chooseButton.setTitle("完了", for: .normal) 24 present(imageCropVC, animated: true) 25 } 26} 27 28extension DataInput1: RSKImageCropViewControllerDelegate { 29 30 func imageCropViewControllerDidCancelCrop(_ controller: RSKImageCropViewController) { 31 dismiss(animated: true, completion: nil) 32 } 33 34 func imageCropViewController(_ controller: RSKImageCropViewController, didCropImage croppedImage: UIImage, usingCropRect cropRect: CGRect, rotationAngle: CGFloat) { 35 dismiss(animated: true) 36 icon?.setImage(croppedImage, for: .normal) 37 38 39 if controller.cropMode == .circle { 40 UIGraphicsBeginImageContext(croppedImage.size) 41 let layerView = UIImageView(image: croppedImage) 42 layerView.frame.size = croppedImage.size 43 layerView.layer.cornerRadius = layerView.frame.size.width * 0.5 44 layerView.clipsToBounds = true 45 let context = UIGraphicsGetCurrentContext()! 46 layerView.layer.render(in: context) 47 let capturedImage = UIGraphicsGetImageFromCurrentImageContext()! 48 UIGraphicsEndImageContext() 49 let pngData = capturedImage.pngData()! 50 51 let png = UIImage(data: pngData)! 52 icon?.setImage(png, for: .normal) 53 } 54 } 55}

info.plist
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/07/25 00:28

落ちるのではなくフリーズしているのでしょうか?
ttah

2019/07/25 00:31

はい キャンセルボタン、完了ボタンを押しても落ちずにフリーズしています
fuzzball

2019/07/25 00:33

ボタンを押しても文字の色が変わらないですか?(変わるならフリーズとは言えません) あと、軽くググってみましたが、そのメッセージは気にしなくていいらしいので、気にしない(囚われない)ほうがいいと思われます。
ttah

2019/07/25 00:44

はい、文字の色は変わらないです 今他の挙動を確認したら写真は動くのでフリーズでは無かったですすみません。 エラーメッセージはやはり関係ないのですね 解決の手掛りが自分にはこれしか無かったのので囚われてました
fuzzball

2019/07/25 00:45 編集

imagePickerController(_:info:)の中で、self.dismiss した後に present しているのが気持ち悪いです。 これって、DataInput1が自分を閉じつつRSKImageCropViewControllerを呼び出しているってことですよね?(ちなみに self.dismiss(animated: true) をコメントアウトするとどうなりますか?)
ttah

2019/07/25 00:59

self.dismiss(animated: true) をコメントアウトしたところ 写真選択後の切り抜き画面(質問に乗せている画面)に移行しなくなりました
fuzzball

2019/07/25 01:05 編集

そのときConsoleになにかメッセージ出てますか? また、あなたの認識としては「DataInput1が自分を閉じつつRSKImageCropViewControllerを呼び出している」で合ってますか?
ttah

2019/07/25 01:17

Warning: Attempt to present <RSKImageCropViewController: 0x7fa1b38d3600> on <abcd.DataInput1: 0x7fa1b2439a00> whose view is not in the window hierarchy! となっています
ttah

2019/07/25 01:22

初心者の為深く理解しきれてませんが 私の認識は単に「写真選択画面を閉じつつ RSKImageCropViewControllerを呼び出している」と認識してしまっていました
fuzzball

2019/07/25 01:23

RSKImageCropViewControllerを呼び出した後、呼び出し元(DataInput1)が無くなってしまうのはダメです。 DataInput1を閉じた後、(閉じきったあとで)親のViewControllerからRSKImageCropViewControllerを呼び出すようにして下さい。
guest

回答1

0

ベストアンサー

これ設定し忘れていませんかね?

imageCropVC.delegate = self

投稿2019/07/25 01:27

takabosoft

総合スコア8356

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ttah

2019/07/25 02:09

takabosoft様回答ありがとうございます 無事解決できました fuzzball様 単純ミスでした  以前 imageCropVC.delegate = self 無しでも問題なく動いていたのでこれが原因と思いませんでした、お付き合いありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問