title: ios AVFoundation tap to focus
body: <p>I am trying to create a camera app which, would act like the default camera app more or less. 
  The thing, which is not working for me at the moment, is tap to focus. I want the camera to focus and do whatever it does on my touched point, just like the real camera app does.</p>
  
  <p>Here's my viewDidLoad</p>
  
  <pre><code>- (void)viewDidLoad
  {
      [super viewDidLoad];
  
      // Session
      _session = [[AVCaptureSession alloc] init];
      _session.sessionPreset = AVCaptureSessionPresetPhoto;
  
      // Input
      _videoDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
      _videoInput = [AVCaptureDeviceInput deviceInputWithDevice:_videoDevice error:nil];
  
      // Output
      _frameOutput = [[AVCaptureVideoDataOutput alloc] init];
      _frameOutput.videoSettings = [NSDictionary dictionaryWithObject:AVVideoCodecJPEG forKey:AVVideoCodecKey];
  
      [_frameOutput setSampleBufferDelegate:self queue:dispatch_get_main_queue()];
      [_session addInput:_videoInput];
      [_session addOutput:_frameOutput];
      [_session startRunning];
  };
  </code></pre>
  
  <p>And here's  the method that should make my camera focus stuff on click.</p>
  
  <pre><code>-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
  
      [touches enumerateObjectsUsingBlock:^(id obj, BOOL *stop) {
          UITouch *touch = obj;
          CGPoint touchPoint = [touch locationInView:touch.view];
          focusLayer.frame = CGRectMake((touchPoint.x-25), (touchPoint.y-25), 50, 50);
  
          if ([_videoDevice isFocusPointOfInterestSupported]) {
              NSError *error;
              if ([_videoDevice lockForConfiguration:&amp;error]) {
                  [_videoDevice setFocusPointOfInterest:touchPoint];
                  [_videoDevice setExposurePointOfInterest:touchPoint];
  
                  [_videoDevice setFocusMode:AVCaptureFocusModeAutoFocus];
                  if ([_videoDevice isExposureModeSupported:AVCaptureExposureModeAutoExpose]){
                      [_videoDevice setExposureMode:AVCaptureExposureModeAutoExpose];
                  }
                  [_videoDevice unlockForConfiguration];
              }
          }
  
  
          // NSLog(@"x = %f, y = %f", touchPoint.x, touchPoint.y);
      }];
  }
  </code></pre>
  
  <p>Nothing really happens once I click on the screen.</p>