2010-04-01 13 views
0

Code ci-dessous.UIImagePickerController ne fait rien lorsque vous utilisez l'appareil photo après avoir frappé le bouton "Utiliser"

Lorsque j'appuie sur le bouton "Utiliser" après avoir pris une photo ... l'application ne répond plus. Des idées de ce que je fais mal? La méthode "addPlayer:" est appelée lorsqu'un bouton est appuyé sur la vue de UIViewController.

Merci

- (IBAction) addPlayers: (id)sender{ 
    // Show ImagePicker 
    UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init]; 
    imagePicker.delegate = self; 

    // If camera is available use it and display custom overlay view so that user can add as many pics 
    // as they want without having to go back to parent view 
    if([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera]) { 
     imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 

    } 
    else { 
     imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; 
    } 

    [self presentModalViewController:imagePicker animated:YES]; 
    [imagePicker release]; 
} 

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { 
    // Grab original image 
    UIImage *photo = [info objectForKey:UIImagePickerControllerOriginalImage]; 

    // Resize photo first to reduce memory consumption 
    [self.photos addObject:[photo scaleToSize:CGSizeMake(200.0f, 300.0f)]]; 

    // Enable *PLAY* button if photos > 1 
    if([self.photos count] > 1) btnStartGame.enabled = YES; 

    // Update player count label 
    lblPlayerCount.text = [NSString stringWithFormat:@"%d", [self.photos count]]; 

    // Dismiss picker if not using camera 
    picker dismissModalViewControllerAnimated:YES]; 

} 
+0

quelle ligne-t-il à arrêter? – willcodejavaforfood

+0

Quelle méthode votre bouton "Utiliser" appelle-t-il? – schaechtele

+1

Le bouton "Utiliser" (à partir des commandes intégrées de la caméra) appelle la méthode UIImagePickerControllerDelegate ci-dessus. J'ai réussi à obtenir ce travail mais seulement après avoir déplacé le "[picker dismissModalViewControllerAnimated: YES];" ligne vers le haut de la même méthode. Cependant, semble encore un peu léthargique. – wgpubs

Répondre

0

J'ai eu aujourd'hui le même problème. Le problème était que je sur-relâchais la variable. Voici la partie de mon code qui plantait:

UIImagePickerController *imagePicker = [[[UIImagePickerController alloc]init]autorelease]; 
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
imagePicker.delegate = self; 
[self presentModalViewController:imagePicker animated:YES] 

puis:

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [[info objectForKey:@"UIImagePickerControllerOriginalImage"]fixOrientation]; 
    [self performSelectorInBackground:@selector(uploadAPhoto:) withObject:image]; 

    [picker release]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 

la seule chose que je l'ai fait est la suppression de la [version du sélecteur] ; ligne et maintenant cela fonctionne très bien.

En regardant votre code, je dirais qu'il ya un problème avec cette ligne:

picker dismissModalViewControllerAnimated:YES]; 

si c'est comme ça dans votre projet, il est vraiment étrange qu'il fonctionne même, il ne manque « [ » au début de la ligne. Et j'utilise

[self dismissModalViewControllerAnimated:YES]; 

Essayez ceci.

Modifier

Désolé, n'a pas vu la date de la question :)

+2

Si OP manquait cette parenthèse dans son projet, il ne compilerait même pas. –