无法更改UIImagePickerController的cameraFlashMode

sol*_*eil 5 camera uiimagepickercontroller ios

我的自定义相机覆盖上有一个按钮,可以调用此方法:

- (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);

}
Run Code Online (Sandbox Code Playgroud)

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

此外,闪存永远不会工作,即使它被认为卡在UIImagePickerControllerCameraFlashModeAuto.

Mar*_*bri 0

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