Search code examples
iosios7uiimagepickercontrollerios7.1ios-camera

iOS 7.1 imagePicker CameraFlashMode not indicating Flash state


I have iPhone application which overlays the camera with custom view. I have a button to switch between camera flash mode, this is the code

switch ([self.imagePickerController cameraFlashMode]) {
    case UIImagePickerControllerCameraFlashModeAuto:
        [self.imagePickerController setCameraFlashMode:UIImagePickerControllerCameraFlashModeOn];
        return @"On";
        break;

    case UIImagePickerControllerCameraFlashModeOn:
        [self.imagePickerController setCameraFlashMode:UIImagePickerControllerCameraFlashModeOff];
        return @"Off";
        break;

    case UIImagePickerControllerCameraFlashModeOff:
        [self.imagePickerController setCameraFlashMode:UIImagePickerControllerCameraFlashModeAuto];
        return @"Auto";
        break;

    default:
        break;
}

This is my problem: Worked perfectly fine on iOS 7.0x, but in iOS 7.1 the cameraFlashMode property returns UIImagePickerControllerCameraFlashModeAuto regardless of its real state.

The flash mode does change, but i get no indication of that. Any clues? Thanks


Solution

  • I solved it like this:

    @property (nonatomic) NSInteger flashMode;
    
    if (_flashMode == UIImagePickerControllerCameraFlashModeAuto)
    {
        _flashMode = UIImagePickerControllerCameraFlashModeOff;
    }
    else if (_flashMode == UIImagePickerControllerCameraFlashModeOff)
    {
        _flashMode = UIImagePickerControllerCameraFlashModeOn;
    }
    else if (_flashMode == UIImagePickerControllerCameraFlashModeOn)
    {
        _flashMode = UIImagePickerControllerCameraFlashModeAuto;
    }
    
    _cameraPicker.cameraFlashMode = (UIImagePickerControllerCameraFlashMode)_flashMode;