2013-03-10 43 views
5

我有我的自定义相机覆盖调用此方法的按钮:无法更改cameraFlashMode为的UIImagePickerController

- (void) changeFlash:(id)sender 
{ 
    //UIImagePickerControllerCameraFlashModeOff = -1, 
    //UIImagePickerControllerCameraFlashModeAuto = 0, 
    //UIImagePickerControllerCameraFlashModeOn = 1 
    NSLog(@"before %d", self.picker.cameraFlashMode); 
    switch (self.picker.cameraFlashMode) { 
     case UIImagePickerControllerCameraFlashModeAuto: 
      [(UIButton *)sender setImage:[UIImage imageNamed:@"flashOn"] forState:UIControlStateNormal]; 
      self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOn; 
      break; 
     case UIImagePickerControllerCameraFlashModeOn: 
      [(UIButton *)sender setImage:[UIImage imageNamed:@"flashOff"] forState:UIControlStateNormal]; 
      self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff; 
      break; 

     case UIImagePickerControllerCameraFlashModeOff: 
      [(UIButton *)sender setImage:[UIImage imageNamed:@"flashAuto"] forState:UIControlStateNormal]; 
      self.picker.cameraFlashMode = UIImagePickerControllerCameraFlashModeAuto; 
      break; 
    } 
    NSLog(@"after %d", self.picker.cameraFlashMode); 

} 

self.picker.cameraFlashMode始终为0,之前和改变之后。我究竟做错了什么?

此外,即使它被认为卡在UIImagePickerControllerCameraFlashModeAuto中,闪光灯也不会工作。

+1

检查self.picker是否为零。 – 2013-03-10 07:46:04

+0

谢谢。它是零。 – soleil 2013-03-10 08:22:49

+0

@soleil我有相机闪光灯问题。我复制你的方法。它像一个魅力一样工作。 – shaikh 2013-04-10 10:28:12

回答

0

self.picker is nil。这是一个常见的错误,你需要经常检查这个错误,因为与Java和其他语言不同,在Objective-C中向nil发送消息是有效的。

+0

在我的情况下,选择器不等于零,我注意到问题发生在iphone上4而不是iPhone 5上。 我创建了另一个问题: [link](http://stackoverflow.com/questions/22403092/cannot-change-cameraflashmode-for-uiimagepickercontroller-iphone-4-custom-camera) – manar 2014-03-14 11:01:50