我在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所以需要一段时间。
我想在功能完成之前解除控制器,但我怎么能这样做?我可以添加一个ActivityIndicator,但我更喜欢解雇imagePickerController。
任何人都知道如何做到这一点?
感谢任何帮助,谢谢!
答案 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
祝你好运