Ios 摇一段时间?

Ios 摇一段时间?,ios,swift,alarm,shake,Ios,Swift,Alarm,Shake,我想使用shake功能关闭闹钟,这会导致用户摇晃手机30秒。是否有办法测试用户摇晃设备的时间,以及如何设置摇晃功能 顺便说一句,我只懂swift代码。我不确定你是否可以附加一个定时器来抖动手势,但也许你可以设置一个计数器来观察它被触发了多少次 要捕捉抖动手势,只需将此方法添加到视图控制器: override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?) { if motion == .MotionS

我想使用shake功能关闭闹钟,这会导致用户摇晃手机30秒。是否有办法测试用户摇晃设备的时间,以及如何设置摇晃功能


顺便说一句,我只懂swift代码。

我不确定你是否可以附加一个定时器来抖动手势,但也许你可以设置一个计数器来观察它被触发了多少次

要捕捉抖动手势,只需将此方法添加到视图控制器:

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

你可以这样做

var timer = Timer()

override func motionBegan(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
    if motion == .motionShake {
        print("Device shaken, shake timer started")
        timer = Timer.scheduledTimer(timeInterval: 30, target: self, selector: #selector(turnOffAlarm), userInfo: nil, repeats: true)
    }
}

override func motionEnded(_ motion: UIEvent.EventSubtype, with event: UIEvent?) {
    if motion == .motionShake {
        print("Device shake stop, shake timer stopeed")
        timer.invalidate()
    }
}

@objc func turnOffAlarm() {
    print("Alarm off")
    timer.invalidate()
}

当用户开始摇晃手机时,您以30秒的间隔启动计时器,如果用户停止摇晃,您将在30秒后调用invalidate,否则,您将调用turnOffAlarm并使计时器无效。

如果用户在该时间内停止摇晃,则不会停止计时器period@RudolfJ,你说得对。使用
motionEnded
功能更新答案。