J'essaie d'afficher un UIImagePickerController après avoir cliqué sur un bouton dans une UIActionSheet. Le code est simple. Cependant, l'appel à [[UIImagePickerController alloc] init]
est suspendu pour plusieurs secondes avant qu'il ne se termine. Je ne vois pas ce comportement dans le simulateur, mais je le vois sur un iPod et un iPhone.La création de UIImagePickerController se bloque pendant plusieurs secondes
Voici les méthodes UIActionSheetDelegate. Les messages du journal ont été ajoutés pour afficher les temps d'exécution.
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
NSLog(@"Action sheet clicked button at index %d", buttonIndex);
switch (buttonIndex) {
case kSelectFromCameraButtonIndex:
[self showImagePickerWithCamera];
break;
case kSelectFromPhotoLibraryButtonIndex:
[self showImagePickerWithPhotoLibrary];
break;
}
}
- (void)actionSheet:(UIActionSheet *)actionSheet willDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog(@"Action sheet will dismiss with button index %d", buttonIndex);
}
- (void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex {
NSLog(@"Action sheet did dismiss with button index %d", buttonIndex);
}
Et voici le code qui crée en fait le UIImagePickerController:
- (void)showImagePickerWithPhotoLibrary {
NSLog(@"Showing image picker with photo library");
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
NSLog(@"Creating picker");
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
NSLog(@"Setting picker settings");
picker.delegate = self;
picker.allowsEditing = YES;
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
NSLog(@"Presenting picker as modal view controller");
[self presentModalViewController:picker animated:YES];
NSLog(@"Releasing picker");
[picker release];
}
}
Rien d'extraordinaire se passe. Cependant, si vous regardez la sortie de la console, vous remarquerez que la ligne où le UIImagePickerController est créé prend environ 7 secondes pour terminer.
2010-09-21 15:23:26.107 Oh Snap[1264:307] Action sheet clicked button at index 1
2010-09-21 15:23:26.113 Oh Snap[1264:307] Showing image picker with photo library
2010-09-21 15:23:26.120 Oh Snap[1264:307] Creating picker
2010-09-21 15:23:33.111 Oh Snap[1264:307] Setting picker settings
2010-09-21 15:23:33.123 Oh Snap[1264:307] Presenting picker as modal view controller
2010-09-21 15:23:33.136 Oh Snap[1264:307] Using two-stage rotation animation. To use the smoother single-stage animation, this application must remove two-stage method implementations.
2010-09-21 15:23:33.144 Oh Snap[1264:307] Using two-stage rotation animation is not supported when rotating more than one view controller or view controllers not the window delegate
2010-09-21 15:23:33.289 Oh Snap[1264:307] Releasing picker
2010-09-21 15:23:33.299 Oh Snap[1264:307] Action sheet will dismiss with button index 1
2010-09-21 15:23:33.916 Oh Snap[1264:307] Action sheet did dismiss with button index 1
Quelqu'un sait ce qui cause cela?
Avez-vous trouvé une solution? Merci ! –