2011-05-04 8 views

Respuesta

-11

el va a necesitar un par de declaraciones vacías (doSOmethingfoo y showAcitivtyfoo) y un NSTimer (myTimer) en el archivo .h, junto con algo de código

-(void)doSmethingfoo { myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self  selector:@selector(showActivityfoo) userInfo:nil repeats:YES]; } 
+3

esto no tiene nada que ver con el tema. –

+1

¿Estás borracho? – Peter

77
#import <AVFoundation/AVFoundation.h> 

...

- (void) turnTorchOn: (bool) on { 

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

      [device lockForConfiguration:nil]; 
      if (on) { 
       [device setTorchMode:AVCaptureTorchModeOn]; 
       [device setFlashMode:AVCaptureFlashModeOn]; 
       //torchIsOn = YES; //define as a variable/property if you need to know status 
      } else { 
       [device setTorchMode:AVCaptureTorchModeOff]; 
       [device setFlashMode:AVCaptureFlashModeOff]; 
       //torchIsOn = NO;    
      } 
      [device unlockForConfiguration]; 
     } 
    } } 
+0

¿Dónde declaras 'torchIsOn'? – Houssni

+0

@YassineHoussni puedes definirlo como iVar en el nombre de clase o en una propiedad si necesitas getter y setters – Dejell

+0

@Odelya sí, ya encontré la solución, la he definido como una propiedad, ¡gracias! – Houssni

23

que combinan el temporizador con la code.it anteriormente trabajado para mí ...

- (void)viewDidLoad 
     { 
     [super viewDidLoad]; 

     myTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self     selector:@selector(toggleFlashlight) userInfo:nil repeats:YES]; 
     // Do any additional setup after loading the view from its nib. 
     } 
     - (void) toggleFlashlight 
     { 

    // check if flashlight available 
    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

Es más fácil simplemente ponerlo en viewDidAppear. –

Cuestiones relacionadas