2016-07-18 1 views
0

Я пытаюсь захватить изображение, нажав на кнопку captureDoc. Но когда я писал эту функцию вдруг я получил выше указанную ошибку в обработчике завершения,Невозможно преобразовать значение типа '(String) -> Void' в ожидаемый тип аргумента '((AnyObject!) -> Void)!'

self.scanDoc.captureImageWithCompletionHander({(imageFilePath: String) -> Void in 

И я не получаю то, что пошло не так. Ниже приведен мой код функции captureDoc.

@IBAction func captureDoc(sender: AnyObject) { 
    weak var weakSelf = self 
      self.scanDoc.captureImageWithCompletionHander({(imageFilePath: String) -> Void in 
       var captureImageView: UIImageView = UIImageView(image: UIImage.imageWithContentsOfFile(imageFilePath)!) 
       captureImageView.backgroundColor = UIColor(white: 0.0, alpha: 0.7) 
       captureImageView.frame = CGRectOffset(weakSelf.view.bounds, 0, -weakSelf.view.bounds.size.height) 
       captureImageView.alpha = 1.0 
       captureImageView.contentMode = .ScaleAspectFit 
       captureImageView.userInteractionEnabled = true 
       weakSelf.view!.addSubview(captureImageView) 
       var dismissTap: UITapGestureRecognizer = UITapGestureRecognizer(target: weakSelf, action: #selector(self.dismissPreview)) 
       captureImageView.addGestureRecognizer(dismissTap) 
       UIView.animateWithDuration(0.7, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: .AllowUserInteraction, animations: {() -> Void in 
        captureImageView.frame = weakSelf.view.bounds 
       }) 

      }) 

} 
+0

Сделать это просто 'imageFilePath' вместо' (imageFilePath: String) -> Void'. – Dershowitz123

+0

Когда я сделал то, что вы сказали, его дайте мне ошибку на следующей строке, ошибка «AnyObject!» не конвертируется в 'String'; вы хотели использовать «как!» заставить downcast? на 4-й строке, где я объявил captureImageView, и когда я опустил его в String, тогда он покажет мне, что еще одна ошибка «imageWithContentsOfFile» недоступна: используйте конструкцию объекта «UIImage (contentsOfFile :)» @ Dershowitz123 –

ответ

0

изменения последняя строка, она должна работать

@IBAction func captureDoc(_ sender: UIButton) { 
weak var weakSelf = self 
     self.scanDoc.captureImageWithCompletionHander({(imageFilePath: String?) -> Void in 
      var captureImageView: UIImageView = UIImageView(image: UIImage.imageWithContentsOfFile(imageFilePath!)!) 
      captureImageView.backgroundColor = UIColor(white: 0.0, alpha: 0.7) 
      captureImageView.frame = CGRectOffset(weakSelf.view.bounds, 0, -weakSelf.view.bounds.size.height) 
      captureImageView.alpha = 1.0 
      captureImageView.contentMode = .ScaleAspectFit 
      captureImageView.userInteractionEnabled = true 
      weakSelf.view!.addSubview(captureImageView) 
      var dismissTap: UITapGestureRecognizer = UITapGestureRecognizer(target: weakSelf, action: #selector(self.dismissPreview)) 
      captureImageView.addGestureRecognizer(dismissTap) 
      UIView.animateWithDuration(0.7, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.7, options: .AllowUserInteraction, animations: {() -> Void in 
       captureImageView.frame = weakSelf.view.bounds 
      }, completion: { _ in }) 

     }) 

}