切换视图控制器后触觉反馈仍在进行
Haptic FeedBack Still Going After Switching The View Controller
我有一个辅助视图控制器,它使用一些触觉反馈。我在每 14 秒循环一次的预定计时器上触发触觉反馈
Timer.scheduledTimer(withTimeInterval: 14, repeats: true) { _ in
self.changeLabel()
}
此计时器调用触发 2 次触觉反馈点击的函数
@objc func changeLabel() {
if counter2 == 1 {
//Haptics
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
impactGenerator.prepare()
impactGenerator.impactOccurred()
Timer.scheduledTimer(withTimeInterval: 7, repeats: false) { _ in
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
impactGenerator.prepare()
impactGenerator.impactOccurred()}
//Changing Label
self.mainFocusLabel.text = self.foclabel1Text
self.manifestationImg.sd_setImage(with: URL(string: self.imglabel1URL))
self.counter2 = 2
(还有更多的代码,但它们都与这个块几乎相同,唯一的区别是它只是将标签更改为 focuslabel2-10 并使用计数器来识别下一个要更改的标签。
令我感到困惑的是——在视图关闭之后——振动(显然还有计时器?)仍在继续。我的 phone 以相同的时间间隔振动。我还没有看到任何代码来禁用触觉反馈。我想我可以将它添加到另一个视图控制器来解决这个问题。
解决了..有点.
我不得不让计时器成为一个变量
var forteenSecTimer : Timer?
forteenSecTimer = Timer.scheduledTimer(withTimeInterval: 14, repeats: true) { _ in
self.changeLabel()
}
然后将此代码添加到任何退出或完成按钮。我不得不以编程方式替换后退按钮,以便我可以确保在关闭视图时激活此代码
forteenSecTimer?.invalidate()
我还必须将视图控制器的呈现样式从弹出窗口更改为仅显示,因为我不确定如何在向下滑动视图以摆脱它时激活该代码。
这不是一个完美的解决方案,但这是我想出的。
我有一个辅助视图控制器,它使用一些触觉反馈。我在每 14 秒循环一次的预定计时器上触发触觉反馈
Timer.scheduledTimer(withTimeInterval: 14, repeats: true) { _ in
self.changeLabel()
}
此计时器调用触发 2 次触觉反馈点击的函数
@objc func changeLabel() {
if counter2 == 1 {
//Haptics
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
impactGenerator.prepare()
impactGenerator.impactOccurred()
Timer.scheduledTimer(withTimeInterval: 7, repeats: false) { _ in
let impactGenerator = UIImpactFeedbackGenerator(style: .medium)
impactGenerator.prepare()
impactGenerator.impactOccurred()}
//Changing Label
self.mainFocusLabel.text = self.foclabel1Text
self.manifestationImg.sd_setImage(with: URL(string: self.imglabel1URL))
self.counter2 = 2
(还有更多的代码,但它们都与这个块几乎相同,唯一的区别是它只是将标签更改为 focuslabel2-10 并使用计数器来识别下一个要更改的标签。
令我感到困惑的是——在视图关闭之后——振动(显然还有计时器?)仍在继续。我的 phone 以相同的时间间隔振动。我还没有看到任何代码来禁用触觉反馈。我想我可以将它添加到另一个视图控制器来解决这个问题。
解决了..有点.
我不得不让计时器成为一个变量
var forteenSecTimer : Timer?
forteenSecTimer = Timer.scheduledTimer(withTimeInterval: 14, repeats: true) { _ in
self.changeLabel()
}
然后将此代码添加到任何退出或完成按钮。我不得不以编程方式替换后退按钮,以便我可以确保在关闭视图时激活此代码
forteenSecTimer?.invalidate()
我还必须将视图控制器的呈现样式从弹出窗口更改为仅显示,因为我不确定如何在向下滑动视图以摆脱它时激活该代码。
这不是一个完美的解决方案,但这是我想出的。