【问题标题】:Swift 5 UIImagePickerController is not getting calledSwift 5 UIImagePickerController 没有被调用
【发布时间】:2020-05-26 16:18:00
【问题描述】:

我有最标准/开箱即用的代码来调用 UIImagePicker 中的委托函数:

导入基础 导入 UIKit //导入UIKit.UIImage

class FirstViewController:
      UIViewController
    , UIImagePickerControllerDelegate
{

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

    var newlyPickedImage: UIImage?

    override func viewDidLoad() {

        super.viewDidLoad()
        self.view.backgroundColor = Color.offWhiteLight

        let singleTap = UITapGestureRecognizer(target: self, action: #selector(onTapImageView))
        self.view.isUserInteractionEnabled = true
        self.view.addGestureRecognizer(singleTap)
    }

    @objc func onTapImageView(){
        DispatchQueue.main.async {
            self.imagePicker.allowsEditing = true
            self.imagePicker.sourceType = .photoLibrary
            self.present(self.imagePicker, animated: true, completion: nil)
        }
    }

    func imagePickerController(
         _ picker: UIImagePickerController
        , didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any])
    {
        print("assert enter function") /// not entered

        if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
            self.bigImageView.image = pickedImage
            print("picked image: \(pickedImage)")
        }

        dismiss(animated: true, completion: nil)
    }
}

问题是func imagePickerController 没有被调用。这很奇怪,因为在不同的视图中,确切的代码确实调用了func imagePickerController。我还尝试在 Appdelegate 中实例化一个全局 UIImagePickerController 实例并引用它,但仍未调用该调用。

【问题讨论】:

    标签: swift uiimagepickercontroller uiimagepicker


    【解决方案1】:

    您似乎缺少UIImagePickerController 的设置委托。用这个替换你的onTapImageView

    @objc func onTapImageView(){
        DispatchQueue.main.async {
            self.imagePicker.allowsEditing = true
            self.imagePicker.sourceType = .photoLibrary
            self.imagePicker.delegate = self
            self.present(self.imagePicker, animated: true, completion: nil)
        }
    }
    

    您还需要控制器确认UINavigationControllerDelegate,因此添加对FirstViewController 的一致性,如下所示:

    class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-30
      • 2015-01-31
      • 1970-01-01
      • 2015-03-07
      • 2015-05-17
      • 2015-10-21
      相关资源
      最近更新 更多