UIImagePickerController: Detecting Camera button (shutter) pressed
Asked Answered
I

2

1

I would like to call a method that takes an NSNotification immediately after the user presses the camera shutter (i.e when the "Preview" tab bar has the buttons "Retake" and "Use").

I can't use the didFinishPickingImage method because at this time the user has already pressed the "Use" button.

I have already implemented this by cameraOverlayView property of UIImagePickerController(see comments), but I wonder whether there are quicker ways of 'observing' this action.

Any ideas?

Infecund answered 4/2, 2010 at 6:14 Comment(3)
what are you trying to accomplish? could you use custom picture taking controls and bypass the standard use/retake controls?Tristichous
I want to display an alert after the user takes the picture. I am trying to avoid using Custom Views to raise the chances of the app being accepted in the App Store.Infecund
As a credit to David who mentioned it, because I was running out of time in my project, this was my way out. So I settled for the cameraOverlay feature of SDK 3.1+ to solve this. Ref: 1. developer.apple.com/iphone/library/documentation/UIKit/… 2. mobile-augmented-reality.blogspot.com/2010/01/…. It is legit so no worries about Apple. But was time consuming than a simple observer method would do.Infecund
B
4

To learn about camera button press event, you can fire a NSNotification for it.

// Add observer for when camera button is pressed
NSNotificationCenter.defaultCenter().addObserver(self, selector: @selector(yourFunctionToPerform), name: "_UIImagePickerControllerUserDidCaptureItem", object: nil)

Also add the following method to the ViewController where you are creating ImagePickerViewController:

-(void) yourFunctionToPerform{

    //Do what you want to do on Camera button tap event

}

I was searching for this problem too, the key/name for the event is really obscure.

Briticism answered 20/7, 2016 at 8:12 Comment(1)
Thank you so much, you're a genius! Easy and not workarounded solution at all! I definitelly like that approach :)Ravid
B
-2

You CAN display it AFTER they choose the image.

- (void)imagePickerController:(UIImagePickerController *)picker 
        didFinishPickingImage:(UIImage *)image
                  editingInfo:(NSDictionary *)editingInfo
{
        //Display the UIAlertView
    [alertView show];
        //Just never use the image
}

If you don't want to use the image you really don't have to

Bouffard answered 4/2, 2010 at 14:59 Comment(1)
Thanks Jaba. But the idea really is that I want to catch the user while he can still quickly "Retake" the picture. Reason: User friendliness.Infecund

© 2022 - 2024 — McMap. All rights reserved.