2016-11-08 5 views
6

私はImagePickerControllerを使用してプロフィール画像を取得しています。ユーザーにはボタンがあります。このボタンはCamRoll機能を起動します。ボタンをクリックすると、通常のImagePickerViewControllerが表示されますが、didFinishPickingMediaWithInfoは呼び出されません。 Swift/Xcodeの以前のバージョンでは、同じコードが呼び出されました。これは私のコードです。Swift ImagePickerController didFinishPickingMediaWithInfoが実行されません

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) 
} 

} 

なぜコードが呼び出されないのですか?

答えて

9

スウィフト3のUIImagePickerControllerDelegateの適切な委任方法は、imagePickerController(_:didFinishPickingMediaWithInfo:)の場合は次のとおりです。

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

} 

あなたはより多くの詳細についてはUIImagePickerControllerDelegateApple Documentationsを確認することができます。

関連する問題