Swift ImagePickerController didFinishPickingMediaWithInfo not starting

I use ImagePickerController to capture profile images. The user has a button. The button launches the CamRoll function. When the button is clicked, the normal ImagePickerViewController appears, but didFinishPickingMediaWithInfo not called. In an earlier version of Swift / Xcode, the same code was called. This is my code.

 import UIKit class AnnonseViewController: UIViewController, UIImagePickerControllerDelegate { @IBOutlet var Image: UIImageView! override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } @IBAction func CamRoll(_ sender: Any) { let imagePicker = UIImagePickerController() imagePicker.delegate = self imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary self.present(imagePicker, animated: true, completion: nil) } private func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [AnyHashable: Any]) { var image = info[UIImagePickerControllerOriginalImage] as! UIImage let imageSize = image.size let width = imageSize.width let height = imageSize.height if width != height { let newDimensions = min(width,height) let widthOffset = (width - newDimensions) / 2 let heightOffset = (height - newDimensions) / 2 UIGraphicsBeginImageContextWithOptions(CGSize(width: newDimensions, height: newDimensions), false, 0.0) image.draw(at: CGPoint(x: -widthOffset, y: -heightOffset), blendMode: .copy, alpha: 1.0) image = UIGraphicsGetImageFromCurrentImageContext()! as UIImage UIGraphicsEndImageContext() } UIGraphicsBeginImageContext(CGSize(width: 150, height: 150)) _ = UIGraphicsGetCurrentContext() image.draw(in: CGRect(x: 0, y: 0, width: 150, height: 150)) let smallImage = UIGraphicsGetImageFromCurrentImageContext() Image.image = smallImage picker.dismiss(animated: true, completion: nil) } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { picker.dismiss(animated: true, completion: nil) } } 

Why is the code not called?

+6
source share
1 answer

The correct delegation method for UIImagePickerControllerDelegate in Swift 3 for imagePickerController(_:didFinishPickingMediaWithInfo:) as follows.

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

You can check the Apple Documentation at UIImagePickerControllerDelegate for more details.

+9
source

Source: https://habr.com/ru/post/1012130/


All Articles