web-dev-qa-db-ja.com

PhotoPicker検出エラー:エラードメイン= PlugInKit Code = 13

フォトライブラリの画像をUIImageViewに表示しようとしています

完全なエラーは次のとおりです。

2017-06-09 21:55:59.063307 + 0200 firstapp2.0 [12873:1120778] PhotoPicker検出エラー:エラードメイン= PlugInKit Code = 13 "クエリがキャンセルされました" UserInfo = {NSLocalizedDescription =クエリがキャンセルされました}

私のコードは以下のとおりです。

import UIKit

class ViewController: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate{

    @IBOutlet weak var pic: UIImageView!
    @IBOutlet weak var text: UILabel!

    var chosenImage : UIImage!

    override func viewDidLoad() {
        super.viewDidLoad()        
        pic.isUserInteractionEnabled = true;
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [AnyHashable: Any]) {
        var chosenImage = info[UIImagePickerControllerEditedImage]
        self.pic!.image = chosenImage as! UIImage
        picker.dismiss(animated: true, completion: nil)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }

    @IBAction func tap(_ sender: Any) {        
        self.text.text = "Kreason"
        let imagePicker = UIImagePickerController()    
        imagePicker.delegate = self        
        imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
        imagePicker.allowsEditing = false    
        self.present(imagePicker, animated: true, completion: nil)
    }
}
100
Kreason Naidoo

Objective-Cを明示的に参照する必要があります。@objc

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
    image = chosenImage
    self.performSegue(withIdentifier: "ShowEditView", sender: self)
    dismiss(animated: true, completion: nil)
}
32

見つけた!それはあなたが "photos"に対する権限を持っていないことをあなたに伝えようとしていますあなたは#import <Photos/Photos.h>を含めて、例えばObjective-Cのように権限を要求する必要があります。

これが時間を節約することを願っています。私はこれをデバッグするのに2日かけて過ごしました!

[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
    switch (status) {
        case PHAuthorizationStatusAuthorized:
            NSLog(@"PHAuthorizationStatusAuthorized");
            break;
        case PHAuthorizationStatusDenied:
            NSLog(@"PHAuthorizationStatusDenied");
            break;
        case PHAuthorizationStatusNotDetermined:
            NSLog(@"PHAuthorizationStatusNotDetermined");
            break;
        case PHAuthorizationStatusRestricted:
            NSLog(@"PHAuthorizationStatusRestricted");
            break;
    }
}];

私は誰かがSwiftで同じことをする方法をあなたに言うことができると確信しています。

16

私はこの解決策を見つけました。下記の2つの理由により、このエラーが発生しました。

  1. 最初に承認のためにこのメソッドを呼び出す必要があります

認証コード

func checkPermission() {
  let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus() switch photoAuthorizationStatus {
    case .authorized: print("Access is granted by user")
    case .notDetermined: PHPhotoLibrary.requestAuthorization({
      (newStatus) in print("status is \(newStatus)") if newStatus == PHAuthorizationStatus.authorized { / do stuff here */ print("success") }
    })
    case .restricted: / print("User do not have access to photo album.")
    case .denied: / print("User has denied the permission.")
  }
}
  1. メソッドの正しい使い方didFinishPickingMediaWithInfoの呼び出し

間違った:

private func imagePickerController( picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
} 

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
} 

この解決策がこのエラーを解決するのに役立つことを願っています。

それがあなたのために働くならば、それが正しいものとしてマークすることを忘れないでください、それでこれは他の人に正しい方法を見つけるのを助けます。

15
user3159598

あまり成功せずに組み合わせ反応のいくつかを試みました。

Swift 4を使用して、イメージが選択されてピッカーに配置されるようにするために、次の2つの項目が実装されていることを確認する必要がありました。

エラードメイン= PlugInKit Code = 13 "クエリがキャンセルされました" UserInfo = {NSLocalizedDescription =クエリがキャンセルされました} "

それでもメッセージはコンソールに表示されますが、画像を追加できなくなるわけではありません。たぶん、これはピッカーが解雇されるというメッセージです。

1)UIImagePickerControllerのデリゲートは(UIImagePickerControllerDelegate & UINavigationControllerDelegate)?なので、プロトコルの1つとしてUINavigationControllerDelegateを明示的に追加する必要があります。

class ViewController:UIViewController, UIImagePickerControllerDelegate, 
    UINavigationControllerDelegate { .... }. 

2)info.plistにPrivacy - Photo library Usage DescriptionキーとString値が設定されていることを確認してください。

もちろん、必ずUIImagePickerControllerを作成し、そのデリゲートをViewDidLoad()selfと等しく設定する必要があります。

class ViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 
    let imagePickerController = UIImagePickerController()
    override func viewDidLoad() {
        super.viewDidLoad()
        imagePickerController.delegate = self
    }
    ...
}
13

私はこの問題を修正しました、あなたのアプリのための許可をチェックするためにviewdidloadまたはviewWillAppearまたはviewDidAppearに下記の関数を呼び出してください。

func checkPermission() {
        let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
        switch photoAuthorizationStatus {
        case .authorized:
            print("Access is granted by user")
        case .notDetermined:
            PHPhotoLibrary.requestAuthorization({
                (newStatus) in
                print("status is \(newStatus)")
                if newStatus ==  PHAuthorizationStatus.authorized {
                    /* do stuff here */
                    print("success")
                }
            })
            print("It is not determined until now")
        case .restricted:
            // same same
            print("User do not have access to photo album.")
        case .denied:
            // same same
            print("User has denied the permission.")
        }
    }

そして上記のメソッドを使うために、クラスの先頭にimport Photosを追加することを忘れないでください。

11
logan.Nguyen

*不足しているデリゲート* Swift 3では

私の場合、すべての設定は正しかった。
1 - デリゲート(UIImagePickerControllerDelegate、UINavigationControllerDelegate);
2 - 権限はすでに検証されています。
3 - plistは既に行われています。
4 - このAnswersに書かれているすべてのこと、私はしました。

しかし、私はviewDidLoadpickerview.delegate = selfを実装するのを忘れていました。なぜなら、私は自分の他のviewControllerからCOPYしてPASTEして、それを忘れたからです!

それが誰かに役立つことを願っています、あなたのCOPY/PASTEを最初に見直してください!

これは最も直接的に役立つ答えではないかもしれません - しかしうまくいけばそれは役立つでしょう!私は99%がこの特定のエラーメッセージが実際にあなたに本当の問題を示していないことを確信しています。私はこの同じ問題で私の髪の毛を引き出すのに何時間も費やしました。

1)ピッカーを起動したときにコンソールに写真を印刷する権限を持っていたこと、2)写真を簡単にナビゲートしてピッキングできたこと、および3)ピッカーを閉じるとビューに戻ったときのボタンの画像新しい写真で更新されませんでした...そして私が問題に持っていたという唯一のヒントはあなたが受けているのと全く同じエラーメッセージでした。

実のところ、ViewDidLoadではなくViewWillAppearでプレースホルダ画像をハードコーディングしていました。ピッカーが却下するたびに、ViewWillAppearを呼び出して、選択した画像をハードコードされた画像に置き換えました。私はその問題を修正し、そして十分に確かにしました - すべてが現在うまく働いています...そして私はまだピッカーから戻るたびにそのエラーメッセージを見ています。

私はあなたの問題のためにImagePicker以外の場所を探すことをお勧めします、そしてあなたはおそらくそれを見つけるでしょう。

6
Levi Lais

XCODE 10.1/Swift 4.2:

  1. 必要な権限を追加します(他の人が言及しました)

  2. このデリゲート関数を実装します。

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
    
        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            self.imgView.contentMode = .scaleAspectFit
            self.imgView.image = pickedImage
        }
    
        dismiss(animated: true, completion: nil)
    }
    
6
FRIDDAY

まだ行っていない場合は、 this を試してください。

製品>スキーム>スキームの編集>環境変数OS_ACTIVITY_MODE: disable

それは私の問題を解決します。

6
Changnam Hong

これはSwift 4の問題を修正します。

下記のコードを変更

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {}

これに:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {}


Swift 4.2 update:
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){}
4
user2153553

UIImagePickerControllerDelegate, UINavigationControllerDelegateの両方をサブクラス化していることを確認してください。

また、デリゲートを設定することを忘れないでください。

let picker = UIImagePickerController()
picker.allowsEditing = true
picker.sourceType = .photoLibrary
picker.delegate = self  //Don't forget this line!
self.present(picker, animated: true, completion: nil)

このソースへの貸方

4
Ryan G

ピッカーコールバックimagePickerControllerから別のコントローラを表示しようとしたときにも同じメッセージが表示されました。私のために働いた解決策は、picker dismissメソッドからの完了コールバックの中に自分のコードを移動することでした。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        picker.dismiss(animated: true) {
            if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
                let cropController:CropViewController = CropViewController(croppingStyle: .circular, image: pickedImage)
                cropController.delegate = self
                self.present(cropController, animated: true, completion: nil)
            }
        }
    }
3
Mario Vasile

これで私は困惑しましたが、下のリンクの答えが私のために働きました。エラーがなくなり、イメージが期待どおりに表示される

上記の答えの1つと同様に、関数の前に(_ picker...だけでなく@objcも必要です。

@objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
...
}

https://forums.developer.Apple.com/thread/82105

3
EGibson

必ずinternal funcを先頭に追加してから、括弧の後に小文字を追加してください(_ picker: UIImagePickerController…AnyObjectからAnyに変更)。
以下のコードを確認してください。

internal func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {

        userPhoto.image = pickedImage

    }

    self.dismiss(animated: true, completion: nil)
}
3
Sabino Diaz

この問題に対する修正を見つけることは私を永遠に連れて行きました。問題は、UIImagePickerControllerDelegateの関数imagePickerControllerが見つからないことです。あなたがデリゲートを正しく設定し、Swift 4へのアップグレード後にそれが動作を停止した場合、問題はおそらくSwift 4以降で必要とされる@objcを使用してObjective-Cにアクセス可能にしなかったことです。

それはする必要があります:

@objc func imagePickerController(...

の代わりに

func imagePickerController(...
3
Apfelsaft

私の場合は、ユーザーが画像へのアクセスを許可されているかどうかを最初に確認せずに画像ピッカーコントローラを表示していたため、このエラーが発生していました。私のコード内の他の場所でユーザーが許可を与えていたので、必要なのは写真のインポートだけです。しかし、私はイメージピッカーコントローラを提示する直前にアプリを追加してアプリのその時点で許可を与えていなかったかもしれないので(私たちにとってもImport Photos)。

// request photos permission if permission has not been granted
    if PHPhotoLibrary.authorizationStatus() != PHAuthorizationStatus.authorized {
        PHPhotoLibrary.requestAuthorization({ (status: PHAuthorizationStatus) in

        })
    }

もしこの答えが私の謝罪を冗長にしているように思われるならば、私は私の解決策を機能させるためにいくつかの異なる答えから一緒にしなければなりませんでした。おそらくこれは他の人がSwift 4を使うのを助けるでしょう。

2
Jason Rybka

画像を設定するときに1秒の遅延を設定することでそれを修正しました。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {

        picker.dismiss(animated: false, completion: nil)
        DispatchQueue.main.asyncAfter(deadline: .now() + 1.0, execute: {
            self.discussionImage.image = image
        })
    }
}
2
Dharmesh

これが私がしたことで、私の問題は解決しました。

  • @objcを追加
  • 内部追加
  • imagePickerの前に_を追加
  • anyObjectではなくAnyを使用していることを確認してください。

お役に立てれば!

2
FreitDev

このコードを使う

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
2
jaskiratjd

次の手順で確認してください。

  1. 写真をインポート
  2. アルバムにアクセスできます。

    func authorizeToAlbum(completion:@escaping (Bool)->Void) {
    
    if PHPhotoLibrary.authorizationStatus() != .authorized {
        NSLog("Will request authorization")
        PHPhotoLibrary.requestAuthorization({ (status) in
            if status == .authorized {
                DispatchQueue.main.async(execute: {
                    completion(true)
                })
            } else {
                DispatchQueue.main.async(execute: {
                    completion(false)
                })
            }
        })
    
    } else {
        DispatchQueue.main.async(execute: {
            completion(true)
        })
    }
    }
    
  3. 現在のUIImagePickerController

    self.authorizeToAlbum { (authorized) in
        if authorized == true {
            let picker = UIImagePickerController()
            picker.delegate = self
            picker.allowsEditing = false
            picker.sourceType = .photoLibrary
    
            self.present(picker, animated: true, completion: nil)
        }
    }
    
  4. 重要なステップです。デリゲートメソッドが厳密に従うようであることを確認してください

    // MARK: - UIImagePickerControllerDelegate Methods
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
        self.pickedImage = pickedImage
        if let finalImage = handleImage(originalImage: self.pickedImage!, maskImage: self.maskImage!) {
            self.imageView.image = finalImage
        }
    }
    
    dismiss(animated: true, completion: nil)
    }
    
2
xuzepei

これは私のエラーを解決しました:

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage
    addPhotoBtn.setImage(pickedImage, for: .normal)
    dismiss(animated: true, completion: nil)


}

func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
    dismiss(animated: true, completion: nil)

}
2
iOS Developer

この「Error Domain = PlugInKit Code = 13」エラーは、無害なAppleデバッグメッセージのように見えても、多くの人々を混乱させています。 UIで設定するために選んだ画像を取得するのに問題があり、そのエラーが問題であると思っていましたが、それはもう少し微妙なものでした。

イメージピッカーコントローラーは、それを表示するView Controllerとは別のファイルにあります。

MyViewController.Swift

class MyViewController: UIViewController {
    @IBOutlet weak var profileImage: UIImageView!

    ...
}

extension MyViewController: ImagePickerDelegate {
    func didSelect(image: UIImage?) {
        self.profileImage.image = image
    }
}

ImagePicker.Swift

open class ImagePicker: NSObject {
    ...
    private func pickerController(_ controller: UIImagePickerController, didSelect image: UIImage?) {
        controller.dismiss(animated: true, completion: {self.delegate?.didSelect(image: image)}
        )
    }
}

チュートリアルと回答のほとんどは、完了がnilに設定されています。ただし、完了をnilに設定し、デリゲートのdidSelectメソッドを個別に呼び出すと、メソッドは呼び出されますが、画像は設定されないため、必ず「完了」完了を使用してください。

繰り返しますが、この答えは元の質問に直接関連していないかもしれませんが、この問題のために多くの人々がここに来ており、与えられた解決策が役に立たないと感じています。理由は、答えを出す人のほとんどが、メインビューコントローラと同じクラスのイメージピッカーコントローラを持っているため、補完を使用する必要がないためです。

1
Braden Holt

あなたは あなたがInfo.plistファイルにフォトライブラリ の使用の許可を設定していないときにもエラーが発生します。

アプリがユーザーのフォトライブラリに初めてアクセスしようとしたときに表示されるStringを付けて、Privacy - Photo Library Usage DescriptionInfo.plistを追加する必要があります。

最後のInfo.plist調整は次のようになります。 enter image description here

1
Knowledge

私の最後にはUINavigationControllerDelegateデリゲートがありません。

class YourViewController:UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate

1
Aleem

私は同じエラーがあり、私はこの方法でそれを修正しました:

異なる方法で画像オブジェクトを取得するには、UIImagePickerControllerのpermitEditingがtrueまたはfalseに依存します。

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

    if isImagePickerAllowEditing {
        sourceImage = info[UIImagePickerControllerEditedImage] as? UIImage
    } else {
        sourceImage = info[UIImagePickerControllerOriginalImage] as? UIImage
    }

    ....

}

そしてもちろん、上のコメントのように最初にフォトライブラリにアクセスする許可を求めてください。

1
melson.jao

Swift 5以降:

import UIKit

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    @IBOutlet weak var pic: UIImageView!
    @IBOutlet weak var text: UILabel!

    var chosenImage : UIImage!

    override func viewDidLoad() {
        super.viewDidLoad()
        pic.isUserInteractionEnabled = true
    }



func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        guard let image = info[.editedImage] as? UIImage else { return }
        dismiss(animated: true)
        chosenImage = image
        **pic.image = chosenImage**

    }

    @IBAction func tap(_ sender: Any) {
        self.text.text = "Kreason"
        let imagePicker = UIImagePickerController()
        imagePicker.delegate = self
        //imagePicker.dataSource = self
        imagePicker.allowsEditing = false
        self.present(imagePicker, animated: true)

    }
}
0
Xab Ion

私はIMage PickerViewのソリューションを見つけました.....

@IBOutlet weak var myImageView: UIImageView!

var imagePicker = UIImagePickerController()


  @IBAction func selectImage(_ sender: Any) {

        let myPickerController = UIImagePickerController()
        myPickerController.delegate = self;
        myPickerController.sourceType = UIImagePickerControllerSourceType.photoLibrary

        self.present(myPickerController, animated: true, completion: nil)

    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        print(info)

        var selectedImageFromPicker: UIImage?

        if let editedImage = info["UIImagePickerControllerEditedImage"] as? UIImage
        {
            selectedImageFromPicker = editedImage as! UIImage


        }else if let originalImage = info["UIImagePickerControllerOriginalImage"] as? UIImage{

            selectedImageFromPicker = originalImage as! UIImage


        }

        dismiss(animated: true, completion: nil)

        if var selectedImage = selectedImageFromPicker
        {
            myImageView.image = selectedImage
        }

    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
0
Muhammad Hamid

DidFinishPickingMediaWithInfoを使用する

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        self.dismiss(animated: true, completion: nil)
        var chosenImage = info[UIImagePickerController.InfoKey.editedImage] as! UIImage
        userProfileImage.image = chosenImage

        uploadImage(chosenImage)
}
0

私は同じ問題に出くわした。上記の提案のどれも私のために働かなかった。しかし、私はそれを明確にpicker.dismissを呼び出して投稿を却下することで解決しました。どうして私がそのような却下電話をかけたのかはっきりしていないが、それは私にとってはうまくいった。

   @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

        print("Image picked")
        picker.dismiss(animated: true, completion: nil)
        dismiss(animated: true) {
            print("dismissed")
             self.delegate?.presentEditor(img: (info[UIImagePickerControllerOriginalImage] as? UIImage)!, id: self.id!)
    }

}
0
Vyshakh

私の場合、Swift割り当てメモリ管理はApple Teamによって最適化および修正されているようです。 Swift更新まで私のコードは完全に機能していましたが、ピッカーを保持していないという「間違い」が見つかりました。

// Add Privacy - Photo Library Usage Description to your info.plist
<key>NSPhotoLibraryUsageDescription</key>
<string>APPNAME need to access your pictures to violate your privacy :P</string>

そして

import Photos    
class MyImageSelector: UIViewController,UIImagePickerControllerDelegate,UINavigationControllerDelegate {

    var picker = UIImagePickerController() 
    // Make sure to retain this picker var until the picker returned

    func checkPermission() {
        let call = self.presentAuthorized

            let photoAuthorizationStatus = PHPhotoLibrary.authorizationStatus()
            switch photoAuthorizationStatus {
            case .authorized:
                print("Access is granted by user")
                showPicker()
            case .notDetermined:
                PHPhotoLibrary.requestAuthorization({ newStatus in
                print("status is \(newStatus)")
                if newStatus == PHAuthorizationStatus.authorized {
                    /* do stuff here */
                    print("success")
                    showPicker()
                }
                })
            case .restricted:
                print("User do not have access to photo album.")
            case .denied:
                print("User has denied the permission.")
            }

    }

    func showPicker() {
        picker = UIImagePickerController()
        picker.allowsEditing = true
        picker.sourceType = .photoLibrary
        picker.delegate = self  //Don't forget this line!
        self.present(picker, animated: true, completion: nil)
    }

    @objc public func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        // DO something with picture
    }

    @objc public func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        // User cancelled the pick
    }
}
0
Benpaper

imageViewをクリックしてフォトライブラリから画像を読み込み、同じimageviewでプレビューを表示します。 Swift 4では

 let imagePicker = UIImagePickerController()
        @IBOutlet weak var userImage: UIImageView! 

     override func viewDidLoad() {
                super.viewDidLoad()
                 imagePicker.delegate = self
                let tap = UITapGestureRecognizer(target: self, action: #selector(SignUpViewController.click))
                userImage.addGestureRecognizer(tap)
                userImage.isUserInteractionEnabled = true
            }

            @objc func click()
            {
                imagePicker.allowsEditing = false
                imagePicker.sourceType = .photoLibrary
                present(imagePicker, animated: true, completion: nil)
            }


            @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
                if  let chosenImage = info[UIImagePickerControllerOriginalImage] as? UIImage{
                userImage.contentMode = .scaleAspectFit
                userImage.image = chosenImage
                }
                dismiss(animated: true, completion: nil)
            }

            func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
                dismiss(animated: true, completion: nil)
            }
0
roshan posakya

私はすべてのこれらの答えを読み、ここで少し修正して却下する必要はありませんでした、これは私のために働きました。

    @objc func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {

      print("########### media picked")
      picker.dismiss(animated: true, completion: nil)
      let img = (info[UIImagePickerControllerOriginalImage] as? UIImage)!
      //set img -picked image to "profileImage" UIimageView
      //use image here
       self.profileImage.image = img
       }
    }

メソッド内でUIImagePickerControllerを作成するのではなく、クラス変数として作成し、一度だけ作成するようにしてください。

UIImagePickerControllerにデリゲートを設定するのを忘れたとき、私はあなたと同じ問題を抱えていました

0
zvjerka24

Swift 4.2 および Xcode 10.0 にも同じ問題がありました。画像ピッカーは正常に動作していましたが、Xcodeはこのエラーをコンソールに表示しました。これを取り除くために:

  • Xcodeメニューの製品>スキーム>スキームの編集
  • [実行]タブをクリックし、[引数]をクリックします。
  • 「環境変数」セクションで、名前 OS_ACTIVITY_MODE および値 disable を持つ変数を追加します
0
Marcos Reboucas