2017-07-09 45 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 =假後,我添加的觀察者。然後選擇器方法不會得到任何通知。

相關問題