У меня есть UITableViewController, который выводит 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 не повезло. Так в чем же дело? Средство выбора изображений в конечном итоге закрывается, так почему же оно не закрывается сразу?
[self performSelector...
наdispatch_async(dispatch_get_main_queue(), ^{[self processImage:info];});
? - person NJones   schedule 07.12.2011