2015-02-06 72 views
0

我有一個手電筒應用程序。 我用這個製作閃光:停止手電筒ios

NSTimer * myTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 
                target:self 
                selector:@selector(toggleFlashlight) 
                userInfo:nil 
                repeats:YES];` 
- (void)toggleFlashlight{ 


    Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice"); 
    if (captureDeviceClass != nil) { 
     AVCaptureDevice *device = 
     [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
     if ([device hasTorch] && [device hasFlash]){ 

      [device lockForConfiguration:nil]; 
      if (device.torchMode == AVCaptureTorchModeOff) { 
       [device setTorchMode:AVCaptureTorchModeOn]; 
       [device setFlashMode:AVCaptureFlashModeOn]; 
       //torchIsOn = YES; 
      } else { 
       [device setTorchMode:AVCaptureTorchModeOff]; 
       [device setFlashMode:AVCaptureFlashModeOff]; 
       // torchIsOn = NO; 
      } 

     [device unlockForConfiguration]; 
     } 
    }  
} 

,但我想阻止它,當我按下一個按鈕。我怎樣才能做到這一點?如果我沒有閃光燈,它會停止閃光。

回答

0

在你停止方法(你說除非你有一個Flash作品),取消任何計劃的閃光計時器...和相機設置爲火炬模式

//stop timer 
[myTimer invalidate]; 

//unflash 
Class captureDeviceClass = NSClassFromString(@"AVCaptureDevice"); 
if (captureDeviceClass != nil) { 
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; 
    if ([device hasTorch] && [device hasFlash]){ 
     [device lockForConfiguration:nil]; 
     [device setTorchMode:AVCaptureTorchModeOff]; 
     [device setFlashMode:AVCaptureFlashModeOff]; 
    } 
    [device unlockForConfiguration]; 
}