UImagePickerController's didFinishPickingMediaWithInfo слишком медленный, могу ли я добавить progressHUD / индикатор? - PullRequest
8 голосов
/ 16 января 2011

Для UIImagePickerController я открыл

picker.allowsEditing = YES;

, чтобы пользователь мог перемещать и масштабировать фотографию после захвата или выбора из альбома.После нажатия «выбрать» или «использовать» все приложение замораживается более чем на 5 секунд, а затем возвращается с фотографиями через

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

. Я попытался добавить индикатор в этот делегат.функция, но она не появляется ... Я думаю, большая задержка происходит до этого обратного вызова, и, вероятно, из-за "редактирования" из ful

Есть ли какой-нибудь возможный способ справиться с этим?Я просто хочу дать пользователям хороший опыт.:)

Спасибо большое !!

Ответы [ 2 ]

6 голосов
/ 16 января 2011

Вы должны выполнить это в другом потоке и с 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];
}
0 голосов
/ 19 февраля 2011

Вы вызываете UIImagePicker из основного потока?

Этот код должен вызываться оттуда.Каждый раз, когда у меня возникает точная 5-секундная задержка для всего, что связано с пользовательским интерфейсом, это происходит потому, что код вызывается из другого потока, а не из основного.

...