2013-03-02 4 views
4

Я использую UIImagePickerController в покадрово обстановке, например:покадрово UIImagePickerController, нажмите, чтобы сосредоточиться не работает

UIImagePickerController *_imagePickerVC = // init the VC with the main camera as the source 
[_mainCameraPreviewContainer addSubview:_imagePickerVC.view]; 
[_mainCameraPreviewContainer bringSubviewToFront:_imagePickerVC.view]; 

Это работает, и я могу снимать, но я могу 't коснитесь области предварительного просмотра, чтобы сделать фокус камеры на этой точке. Я попытался исправить это, добавив одну или обе из этих двух строк:

_imagePickerVC.showsCameraControls = NO; 
_imagePickerVC.view.userInteractionEnabled = YES; 

но не повезло. Когда я показываю элементы управления камерой, у меня есть кнопка режима вспышки и кнопка выбора камеры, но эти кнопки также не поддаются отображению. Возможно ли сделать акцент на работу в моей ситуации?

ответ

2

Я повторил ваш код и нажал, чтобы сфокусироваться и кнопки работают. (iOS 5.1, 6.1).

- (IBAction)buttonTap:(id)sender { 
    if (!_imagePickerVC) 
    { 
     _imagePickerVC = [UIImagePickerController new]; 
     _imagePickerVC.sourceType = UIImagePickerControllerSourceTypeCamera; 
    } 

    [self.view addSubview:_imagePickerVC.view]; 
    [self.view bringSubviewToFront:_imagePickerVC.view]; 
} 

Убедитесь, что mainCameraPreviewContainer.userInteractionEnabled == YES.

+0

Это было, проблема была 'mainCameraPreviewContainer.userInteractionEnabled'. Спасибо чувак! – Macondo2Seattle

1

Попробуйте это и дайте мне знать ..

_imagePickerVC.view.userInteractionEnabled = YES; 
UIPanGestureRecognizer *pgr = [[UITapGestureRecognizer alloc] 
           initWithTarget:self action:@selector(handleTap:)]; 

[_imagePickerVC addGestureRecognizer:pgr]; 
[pgr release]; 


-(void)handleTap{ 
    AVCaptureDevice *device = [[self captureInput] device]; 

    NSError *error; 

    if ([device isFocusModeSupported:AVCaptureFocusModeAutoFocus] && 
     [device isFocusPointOfInterestSupported]) 
    { 
     if ([device lockForConfiguration:&error]) { 
      [device setFocusPointOfInterest:point]; 

     CGPoint point = [touch locationInView:self.cameraView]; 
    point.x /= self.cameraView.frame.size.width; 
    point.y /= self.cameraView.frame.size.height; 
    [self focusAtPoint:point]; 

      [device unlockForConfiguration]; 
     } else { 
      NSLog(@"Error: %@", error); 
     } 
    } 
}