摇晃一定时间?
Shake for a certain period of time?
我想使用摇动功能来关闭闹钟,这会导致用户摇动 phone 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()
}
当用户开始摇动 phone 时,您会以 30 秒的间隔启动计时器,如果用户停止摇动,您将调用 invalidate,否则在 30 秒后您将调用 turnOffAlarm 并使计时器失效。
我想使用摇动功能来关闭闹钟,这会导致用户摇动 phone 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()
}
当用户开始摇动 phone 时,您会以 30 秒的间隔启动计时器,如果用户停止摇动,您将调用 invalidate,否则在 30 秒后您将调用 turnOffAlarm 并使计时器失效。