12

如何在 Swift 的 AppDelegate 中(跨整个应用程序)检测设备抖动?

我找到了描述如何在视图控制器中这样做的答案,但希望在我的应用程序中这样做。

4

2 回答 2

29

如果要全局检测抖动,UIWindow 实现了可以接收抖动事件的 UIResponder。您可以将以下代码段添加到 AppDelegate

extension UIWindow {
    open override func motionEnded(_ motion: UIEventSubtype, with event: UIEvent?) {
        if motion == .motionShake {
            print("Device shaken")
        }
    }
}
于 2017-04-18T06:36:59.043 回答
8

在您的 中添加以下代码段AppDelegate

override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) {
    if motion == .MotionShake {
        print("Device shaken")
    }
}

斯威夫特 3.0 版本:

override func motionBegan(_ motion: UIEventSubtype, with event: UIEvent?) {
    if motion == .motionShake {
        print("Device shaken")
    }
}

至于以后的版本,这似乎不再起作用。您需要在视图控制器中添加上述代码

于 2016-01-13T18:05:34.643 回答