【问题标题】:My timer stops after one round我的计时器在一轮后停止
【发布时间】:2023-03-12 02:39:01
【问题描述】:

我有这个代码可以让我的手机不断振动。但它在 1 次振动后停止。我的计时器有问题吗?

var timer: Timer?

@IBAction func button1(_ sender: UIButton) {
    AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
    timer?.invalidate()
    timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: Selector(("doaction")), userInfo: nil, repeats: true)   
}

我做错了什么?帮助?我也在快速使用xcode。如果这很重要,请拥有一部 iphone 7 plus。

【问题讨论】:

  • 一旦我断开连接并尝试运行应用程序,我的 iphone 也会崩溃
  • 请显示doaction 方法。毕竟,这就是计时器反复调用的内容。

标签: ios iphone swift vibration


【解决方案1】:

计时器在一轮后不会停止振动。计时器从不振动。

计时器所做的是重复调用doaction 方法。但是doaction 方法不执行任何振动。因此唯一的振动是button1中的单一振动。

【讨论】:

    【解决方案2】:

    振动只会在您点击按钮时发生,您需要在“doaction”方法中发生振动:

    var timer: Timer?
    
    @IBAction func button1(_ sender: UIButton) {
        doaction()
        timer?.invalidate()
        timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: Selector(("doaction")), userInfo: nil, repeats: true)   
    }
    
    func doaction() {
        AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-19
      • 1970-01-01
      相关资源
      最近更新 更多