2017-07-09 27 views
1

我正在用SpriteKit构建一款需要使用接近传感器的游戏。当接近传感器感应到它关闭时,我有一个滑动手势可以打开接近感应。我的问题是,我第一次刷手,把手放在传感器上,功能运行,一切正常。第二次,当我将手从接近传感器上移开时,我将手滑过传感器,屏幕变黑,然后运行该功能,一切正常。当我将手放在传感器上而不是当我移开手时,我希望它激活并运行该功能。有没有人不能如何解决这个问题?第一次使用后接近传感器无法正常工作

接近传感器代码:

func setProximitySensorEnabled(_ enabled: Bool) { 
    let device = UIDevice.current 
    device.isProximityMonitoringEnabled = enabled 
    if device.isProximityMonitoringEnabled == true { 
     NotificationCenter.default.addObserver(self, selector: #selector(proximityChanged), name: .UIDeviceProximityStateDidChange, object: device) 
     print("added observer!!!") 
    } else { 
     NotificationCenter.default.removeObserver(self, name: .UIDeviceProximityStateDidChange, object: nil) 
     print("removed observer!!!") 
    } 
} 

func proximityChanged(_ notification: Notification) { 
    if let device = notification.object as? UIDevice { 
     print("\(device) detected!") 
     print("An object is near!!") 

     vibrate() 

     setProximitySensorEnabled(false) 

    } 
} 

刷卡功能:

func swipe() { 
    print("swipe detected") 
    setProximitySensorEnabled(true) 
} 

回答

0

以我为例,我发现某处在我的项目设置UIDevice.current.isProximityMonitoringEnabled =假后,我添加的观察者。然后选择器方法不会得到任何通知。

相关问题