完成前解除ImagePicker

时间:2015-12-16 15:20:22

标签: ios swift swift2 uiimagepickercontroller

我在Swift中使用ImagePickerSheetController。我的代码看起来像这样

 controller.addAction(ImagePickerAction(title: NSLocalizedString("Take Photo", comment: "Action Title"), secondaryTitle: NSLocalizedString("Use this photo", comment: "Action Title"), handler: { _ in

  presentImagePickerController(.Camera)

  }, secondaryHandler:
  { _, numberOfPhotos in

  self.getAssetThumbnail(self.controller.selectedImageAssets.last!)
  self.performImageRecognition(scaledImage)
  }))

我的问题是:在用户选择图像10秒后,ImagePicker得到了解散,这就是应用已经冻结的想法。原因是第二种方法performImageRecognition使用OCR所以需要一段时间。

我想在功能完成之前解除控制器,但我怎么能这样做?我可以添加一个ActivityIndi​​cator,但我更喜欢解雇imagePickerController。

任何人都知道如何做到这一点?

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:1)

由于你的OCR方法是一项繁重的任务 - 应该在pick完成后调用它。一行接一个不一定保证因为OS以纳米级执行。 为什么不实现UIImagePickerController的委托方法?因此,您可以将代码放在didFinishPickingMediaWithInfo上,然后执行OCR操作并自行关闭选择器。 对于实例:

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
if let pickedImg = info[UIImagePickerControllerOriginalImage] as? UIImage 
{
    // use your pickedImg
}

dismissViewControllerAnimated(true, completion: nil)

// do your OCR stuff here...}

不要忘记picker.delegate = self

祝你好运