2016-11-08 1 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

imagePickerController(_:didFinishPickingMediaWithInfo:)에 대한 Swift 3에서 UIImagePickerControllerDelegate의 올바른 대리인 메서드는 다음과 같습니다.

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

} 

당신은 자세한 내용은 UIImagePickerControllerDelegateApple Documentations를 확인할 수 있습니다.

관련 문제