0

そのため、カメラが起動するたびに表示されるオーバーレイ用の UISwitch があります。オンボタンを切り替えるか、スイッチを右(オンモード)にスライドさせると、懐中電灯がオンになります。しかし、左に切り替えても消えません。私は何を間違っていますか?

- (void)mySwitchPressed {
    if (self.mySwitch.on) { 
        AVCaptureDevice *flashLight = [AVCaptureDevice
        defaultDeviceWithMediaType:AVMediaTypeVideo];
        if([flashLight isTorchAvailable] && [flashLight
            isTorchModeSupported:AVCaptureTorchModeOn]) {
            BOOL success = [flashLight lockForConfiguration:nil];
            if(success) {
                [flashLight setTorchMode:AVCaptureTorchModeOn];
                [flashLight unlockForConfiguration];
            }
        } else {
            AVCaptureDevice *flashLight = [AVCaptureDevice
            defaultDeviceWithMediaType:AVMediaTypeVideo];
            if([flashLight isTorchAvailable] && [flashLight 
                isTorchModeSupported:AVCaptureTorchModeOn]) {
                BOOL success = [flashLight lockForConfiguration:nil];
                if(success) {
                    [flashLight setTorchMode:AVCaptureTorchModeOff];
                    [flashLight unlockForConfiguration];
                }
            }
        }
    }
}
4

1 に答える 1

1

コードを再フォーマットすると、else句が間違った場所にあるようです。最初のブロックelseの終わりの後に to を移動してみてください:if

- (void)mySwitchPressed {
    if (self.mySwitch.on) { 
        AVCaptureDevice *flashLight = [AVCaptureDevice
        defaultDeviceWithMediaType:AVMediaTypeVideo];
        if([flashLight isTorchAvailable] && [flashLight
            isTorchModeSupported:AVCaptureTorchModeOn]) {
            BOOL success = [flashLight lockForConfiguration:nil];
            if(success) {
                [flashLight setTorchMode:AVCaptureTorchModeOn];
                [flashLight unlockForConfiguration];
            }
        }
    } else {
        AVCaptureDevice *flashLight = [AVCaptureDevice
        defaultDeviceWithMediaType:AVMediaTypeVideo];
        if([flashLight isTorchAvailable] && [flashLight 
            isTorchModeSupported:AVCaptureTorchModeOn]) {
            BOOL success = [flashLight lockForConfiguration:nil];
            if(success) {
                [flashLight setTorchMode:AVCaptureTorchModeOff];
                [flashLight unlockForConfiguration];
            }
        }
    }
}
于 2012-07-31T00:16:47.890 に答える