微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

切换视图控制器后,触觉反馈仍然存在

如何解决切换视图控制器后,触觉反馈仍然存在

我有一个辅助视图控制器,它使用一些触觉反馈。我在每 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 并使用计数器识别下一个要更改的标签是什么。

发生了什么让我感到困惑的是 - 在视图关闭后 - 振动(显然是计时器?)仍在进行。我的手机以相同的间隔振动。我还没有看到任何禁用触觉反馈的代码。我想我可以将它添加到另一个视图控制器来解决这个问题。

解决方法

解决了......有点。

我必须让计时器成为一个变量

var forteenSecTimer : Timer?

 forteenSecTimer = Timer.scheduledTimer(withTimeInterval: 14,repeats: true) { _ in
                self.changeLabel()
                }

然后将此代码添加到任何退出或完成按钮。我必须以编程方式替换后退按钮,以便确保在关闭视图时激活此代码

forteenSecTimer?.invalidate()

我还必须将视图控制器的呈现样式从弹出式更改为仅显示,因为当视图滑下以摆脱它时,我不确定如何激活该代码。

不是一个完美的解决方案,但这是我想出的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。