Как включить / выключить фонарик одной кнопкой?

Я могу включить фонарик одной кнопкой, а другой - выключить. Но я хочу сделать это только с одной кнопкой. Однако у меня нет структуры, которая позволяла бы мне использовать метод bool isSelected. Поэтому я совершенно не знаю, как объединить обе функции в одну кнопку.

Вот код, который работает:

-(void)onButtonPressed 
{

AVCaptureDevice *flashLight = [AVCaptureDevice 
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
    BOOL success = [flashLight lockForConfiguration:nil];
    if(success){
        [flashLight setTorchMode:AVCaptureTorchModeOn];
        [flashLight unlockForConfiguration];
    }
}

}

Я использую это, чтобы выключить фонарик.

-(void)offButtonPressed {

AVCaptureDevice *flashLight = [AVCaptureDevice
defaultDeviceWithMediaType:AVMediaTypeVideo];
if([flashLight isTorchAvailable] && [flashLight
isTorchModeSupported:AVCaptureTorchModeOn])
{
    BOOL success = [flashLight lockForConfiguration:nil];
    if(success){
        [flashLight setTorchMode:AVCaptureTorchModeOff];
        [flashLight unlockForConfiguration];
    }
}


}

Я не особенно о способе, которым это сделано. Пока фонарик включается при первом касании и выключается при втором, мне наплевать на этот метод.

Тем не менее, я использую barbuttonitems, сделанные программно, поэтому, пожалуйста, не давайте мне методы IBAction. Я также был бы признателен, если предложенный метод был настолько прост, насколько это возможно, я думаю, способ, которым я сейчас использую фонарик, слишком сложен.

Ответы на вопрос(5)

Ваш ответ на вопрос