简体   繁体   中英

UIImagePickercontroller not saving without use button

I'm using UIImagePickerController to take picuture and save to photo gallery. When i launch the picker it has the button to photo take and cancel after taking photo it shows 2 button Retake & use, if i use, use button then only image saving to photo album but after saving i can't go to previous page or close the picker.

-(void)takepicture:(id)sender{


 // Create image picker controller
 UIImagePickerController *imagePicker = [[UIImagePickerController alloc] init];

 // Set source to the camera
 imagePicker.sourceType =  UIImagePickerControllerSourceTypeCamera;

 // Delegate is self
 imagePicker.delegate = self;



 // Show image picker
 [self presentModalViewController:imagePicker animated:YES];

 // [self performSelector:@selector(onTimer_Loadpicture:) withObject:nil afterDelay:0.5];

 }


 - (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
 {
 // Access the uncropped image from info dictionary
 UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

 // Save image
 UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

 // UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

 [picker release];


}


 - (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker {
 [self dismissModalViewControllerAnimated:YES];
 }


 - (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
 {
 UIAlertView *alert;

 // Unable to save the image
 if (error)
 alert = [[UIAlertView alloc] initWithTitle:@"Error"
 message:@"Unable to save image to Photo Album."
 delegate:self cancelButtonTitle:@"Ok"
 otherButtonTitles:nil];
 else // All is well
 alert = [[UIAlertView alloc] initWithTitle:@"Success"
 message:@"Image saved to Photo Album."
 delegate:self cancelButtonTitle:@"Ok"
 otherButtonTitles:nil];
 [alert show];
 [alert release];

 [self performSelector:@selector(onTimer_Loadpicture:) withObject:nil afterDelay:0.5];

 }

just dismiss your view controller. like this ,update your didFinishPickingMediaWithInfo method

- (void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
     {
     // Access the uncropped image from info dictionary
     UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];

     // Save image
     UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

     // UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);

    [picker dismissViewControllerAnimated:YES completion:NULL];


    }

You are not dismissing your view controller.You should do like this and if part of this code is not necessary it is up to you that you want to check your image in imageView or not.If you do not want to check then simply remove the if part and use else part's code.

    - (void)imagePickerController:(UIImagePickerController *)picker  didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editingInfo{
   [self dismissModalViewControllerAnimated:YES];
     _imgview.image = [editingInfo valueForKey:@"UIImagePickerControllerOriginalImage"];
    if(_imgview==nil){
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Angry!!!"   message:@"Vennligst velg et bilde!" delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil];
        [alert show];

        }
    else{
        _imgview.image = img;
         imageData=[self compressImage:img];
         [picker dismissModalViewControllerAnimated:YES];
        _lblname.hidden=true;
       }
  return;
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM