在AppDelegate中检测抖动

时间:2016-01-13 17:20:00

标签: ios swift swift3 appdelegate shake

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

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

2 个答案:

答案 0 :(得分:14)

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

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

答案 1 :(得分:7)

<!-- Google Analytics --> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-XXXXX-Y', 'auto'); </script> <!-- End Google Analytics --> 中添加以下代码段:

AppDelegate

Swift 3.0版本:

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

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