无法更改UIImagePickerController的cameraFlashMode

时间:2013-03-10 05:52:43

标签: ios camera 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 个答案:

答案 0 :(得分:0)

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