У меня есть 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 такой удачи нет. Так в чем же дело? Средство выбора изображений в конечном итоге закрывается, так почему же оно не отменяется немедленно?