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?

erastusnjuki
  • 1,491
  • 3
  • 14
  • 32
  • 2
    what are you trying to accomplish? could you use custom picture taking controls and bypass the standard use/retake controls? – David Maymudes Feb 04 '10 at 07:11
  • 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. – erastusnjuki Feb 04 '10 at 12:20
  • 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. http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIImagePickerController_Class/UIImagePickerController/UIImagePickerController.html#//apple_ref/occ/instp/UIImagePickerController/cameraOverlayView 2. http://mobile-augmented-reality.blogspot.com/2010/01/good-tutorial-about-using.html. It is legit so no worries about Apple. But was time consuming than a simple observer method would do. – erastusnjuki Feb 05 '10 at 08:26

2 Answers2

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.

NSNoob
  • 5,548
  • 6
  • 41
  • 54
Axel
  • 1,053
  • 9
  • 19
-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

Jab
  • 26,853
  • 21
  • 75
  • 114
  • 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. – erastusnjuki Feb 04 '10 at 16:39