UIImagePickerController的didFinishPickingMediaWithInfo太慢了,我可以添加progressHUD /指标吗?

时间:2011-01-16 04:26:33

标签: iphone uiimagepickercontroller

对于UIImagePickerController,我打开了

picker.allowsEditing = YES;

这样用户可以在捕获或从相册中选择后移动和缩放照片。点击“选择”或“使用”后,整个应用程序冻结超过5秒,然后返回照片,通过

- (void)imagePickerController:(UIImagePickerController*)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info

我试图在这个委托函数中添加一个指标,但它没有出现......我猜,长延迟发生在这个回调之前,可能是因为来自ful的“编辑”

有没有办法解决这个问题?我只想给用户一个很好的体验。 :)

非常感谢!!

2 个答案:

答案 0 :(得分:6)

您应该在另一个线程和NSAutoreleasePool上执行此操作,如下所示:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo {
   [self.navigationController dismissModalViewControllerAnimated:YES];   
   [NSThread detachNewThreadSelector:@selector(uploadImage:) toTarget:self withObject:image];  
}

- (void)uploadImage:(UIImage *)image {
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   // Handle chosen photo
   [pool release];
}

答案 1 :(得分:0)

你是从主线程调用UIImagePicker吗?

应该从那里调用此代码。每次我在与UI相关的任何内容上都有5秒的延迟,这是因为代码是从另一个线程调用的,而不是主线程。