2015-10-25 2 views
-1

До сих пор в моем коде я могу включить факел, когда включен датчик приближения, но у меня возникают проблемы с настройкой моего кода, чтобы сделать так, чтобы при отключенной близости фонарь погас.Как переключить факел с помощью датчика приближения?

func proximityChanged(notification: NSNotification) { 
    if let device = notification.object as? UIDevice { 
    print("\(device) detected!") 
    toggleTorch(on: true) 
    } else { 
//This is the line of code I need help with specifically. 
     toggleTorch(on: false) 
    } 
} 

func activateProximitySensor() { 
    let device = UIDevice.currentDevice() 
    device.proximityMonitoringEnabled = true 
    if device.proximityMonitoringEnabled { 
     NSNotificationCenter.defaultCenter().addObserver(self, selector: "proximityChanged:", name: "UIDeviceProximityStateDidChangeNotification", object: device) 

    } 
} 

func toggleTorch(on on: Bool) { 
    let device = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo) 

    if device.hasTorch { 
     do { 
      try device.lockForConfiguration() 

      if on == true { 
       device.torchMode = .On 
      } else { 
       device.torchMode = .Off 
      } 

      device.unlockForConfiguration() 
     } catch { 
      print("Torch could not be used") 
     } 
    } else { 
     print("Torch is not available") 
    } 
} 

ответ

0

object в уведомлении будет всегда являться UIDevice, так что ваш тест не имеет смысла. Проблема в том, что вы не проверяете, является ли пользователь приблизительным или нет. Получив ссылку на устройство, вам необходимо проверить его свойство proximityState; , что - основа, необходимая для вашего теста.

+0

Как проверить свойство proximityState. Могу ли я заменить свою функцию на toggleTorch на свойство check proximityState? Яблочная литература не слишком конкретна. Спасибо за помощь. –

+2

Я не знаю, что вы подразумеваете под «яблочной литературой». Просто прочитайте документацию по классу UIDevice. Я не собираюсь писать ваш код для вас. – matt

Смежные вопросы