Как включить / выключить фонарик одной кнопкой?
Я могу включить фонарик одной кнопкой, а другой - выключить. Но я хочу сделать это только с одной кнопкой. Однако у меня нет структуры, которая позволяла бы мне использовать метод 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. Я также был бы признателен, если предложенный метод был настолько прост, насколько это возможно, я думаю, способ, которым я сейчас использую фонарик, слишком сложен.