私はUIImagePickerControllerをポップアップし、ユーザーは写真を撮って、使用ボタンを押します。ピッカーはイメージが処理されている間にカスタムサムネイルスピナーを表示するように却下し、スピナーは最後の実際のサムネイルに置き換えられます。処理。なぜios5ですぐにUIImagePickerControllerを却下しないのですか?
少なくとも、iOS4でどのように動作したかです。 iOS5では、処理が完了するまで処理が行われ、すべて正常に動作します。しかし、私はそこにスピナーを置いて、ユーザーは何かが起こっていることを知っている。そうでなければ、それはちょうどハングアップしたように見える。この
- (void) actionSheet: (UIActionSheet *)actionSheet didDismissWithButtonIndex (NSInteger)buttonIndex {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.allowsEditing = NO;
// yada, yada, yada
[self presentModalViewController:picker animated:YES];
[picker release];
}
そして
は、ユーザが「使用」を選ぶときに呼び出される:だから私は、この持っている
- (void) imagePickerController: (UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[self dismissModalViewControllerAnimated:YES];
[self performSelectorOnMainThread:@selector(processImage:) withObject:info waitUntilDone:NO];
animate = true;
}
をし、このサムネイルが回転している間、処理を実行するために呼び出されます:
- (void) processImage:(NSDictionary *)info
{
UIImage *image = nil;
NSString* mediaType = [info objectForKey:UIImagePickerControllerMediaType];
// processing of image
animate = false;
[activityImageView stopAnimating];
[activityImageView release];
[self.tableView reloadData];
}
私が言ったように、それはiOS4と完全に機能しましたが、iOS5ではそのような運がありませんでした。だから何が問題なの?イメージピッカーは最終的に解雇されるので、すぐに解雇されないのはなぜですか?
を...' dispatch_async 'と(dispatch_get_main_queue()、^ {[self processImage:info];}); '? – NJones
良い考えですが、同じ動作です。少なくとも私は何か新しいことを学んだ! – mutatron