2013-07-08 33 views
0

我具有應在設備上只使用前攝像機iPad程序,ipad公司的UIImagePickerController僅前攝像機

的問題是,我走之後與前置攝像頭的第一圖片,如果用戶選擇重新拍攝一照片,然後使用後置攝像頭,如果重新拍攝,則使用正確的前置攝像頭,

我釋放imagePicker和彈出窗口,顯示我的相機預覽和圖像,每次拍攝圖片時都會點擊。

- (void)setUpImagePicker 
{ 
    //poner photo picker en pop up! 
    BOOL hasCamera = [UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]; 

    picker = [[UIImagePickerController alloc] init]; 
    picker.delegate = self; 
    picker.sourceType = hasCamera ? UIImagePickerControllerSourceTypeCamera : UIImagePickerControllerSourceTypePhotoLibrary; 
    picker.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
    [picker setShowsCameraControls:FALSE]; 
    CGAffineTransform translate = CGAffineTransformMakeTranslation(0.0, 0.0); 
    picker.cameraViewTransform = translate; 
    CGAffineTransform scale = CGAffineTransformScale(translate, 1, 1); 
    picker.cameraViewTransform = scale; 

    self.companyPopOverController = [[[UIPopoverController alloc] initWithContentViewController:picker] autorelease]; 
    self.companyPopOverController.passthroughViews=[NSArray arrayWithObject:self.view]; 
    [self createTimer]; 
} 
- (NSTimer*)createTimer { 

    // create timer on run loop 
    return [NSTimer scheduledTimerWithTimeInterval:0.3 target:self selector:@selector(timerTicked:) userInfo:nil repeats:NO]; 
} 

- (void)timerTicked:(NSTimer*)timer { 

    [self.companyPopOverController presentPopoverFromRect:CGRectMake(622, 534, 10, 10) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES]; 
} 
- (void)takePicButtonPressed:(id)sender 
{ 
    NSLog(@"takePicButtonPressed"); 

    if (!self.retakePic) { 
     NSLog(@"retake no"); 
     self.retakePic = YES; 
     self.imageTaken = YES; 

     [self.takePicButton setImage:[UIImage imageNamed:@"takePicButton_Re"] forState:UIControlStateNormal]; 
     [picker takePicture]; 

     return; 
    }else { 
     NSLog(@"retake is yes"); 
     self.retakePic = NO; 
     self.imageTaken = NO; 

     picker = nil; 
     [picker release]; 
     self.companyPopOverController = nil; 
     [self.companyPopOverController release]; 
      [self setUpImagePicker]; 

     //button image, take 
     [self.takePicButton setImage:[UIImage imageNamed:@"takePicButton"] forState:UIControlStateNormal]; 

     return; 
    } 

} 

那麼我怎樣才能確保我的應用程序只使用前置攝像頭?

謝謝!

回答

3

這是一個解決方法,但是因爲沒有代表你正在尋找的東西,所以這可以解決問題。

註冊從PickerController在viewDidLoad中通知(在這種情況下,因爲你實現你自己的控件,你可能要設置自己的通知)

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(retakeImage:) 
              name:@"_UIImagePickerControllerUserDidRejectItem" object:nil]; 

然後,當用戶選擇重拍照片再顯撿拾工具使用前置攝像頭。

- (void)retakeImage:(NSNotification *)notification 
    { 
     self.pickerController.cameraDevice = UIImagePickerControllerCameraDeviceFront; 
    } 

希望這會有所幫助!

相關問題