首次使用后,接近传感器无法正常工作

时间:2017-07-09 14:37:45

标签: ios swift proximity

我正在使用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)
}

1 个答案:

答案 0 :(得分:0)

就我而言,我发现在添加观察者之后,我的项目中的某个地方设置了UIDevice.current.isProximityMonitoringEnabled = false。那么选择器方法不会得到任何通知。