摇晃一段时间?
Posted
技术标签:
【中文标题】摇晃一段时间?【英文标题】:Shake for a certain period of time? 【发布时间】:2015-12-13 08:42:22 【问题描述】:我想使用摇晃功能关闭闹钟,这会导致用户摇晃手机 30 秒。有没有办法测试用户摇动设备的时间以及如何设置摇动功能?
顺便说一句,我只懂swift代码。
【问题讨论】:
【参考方案1】:我不确定你是否可以附加一个定时器来摇动手势,但也许你可以设置一个计数器来观察它被触发了多少次?
要捕捉摇晃手势,只需将此方法添加到您的视图控制器:
override func motionBegan(motion: UIEventSubtype, withEvent event: UIEvent?)
if motion == .MotionShake
print("Device was shaken!")
【讨论】:
【参考方案2】:你可以这样做
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 秒的间隔启动计时器,如果用户停止摇动,您将调用 invalidate,否则在 30 秒后您将调用 turnOffAlarm 并使计时器失效。
【讨论】:
如果用户在该时间段内停止摇晃,这不会停止计时器 @RudolfJ,你是对的。使用motionEnded
函数更新了答案。以上是关于摇晃一段时间?的主要内容,如果未能解决你的问题,请参考以下文章