Невозможно преобразовать значение типа '(String) -> Void' в ожидаемый тип аргумента '((AnyObject!) -> Void)!'

Я пытаюсь захватить изображение, нажав на кнопку captureDoc. Но когда я написал эту функцию внезапно, я получил вышеуказанную ошибку в обработчике завершения,

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

            })

}

1 ответ

Поменяй последнюю строчку, должно работать

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

        })

}

Другие вопросы по тегам