【问题标题】:scheduled timer does not end, if LongPressReconizerState is end如果 LongPressReconizerState 为结束,则计划的计时器不会结束
【发布时间】:2018-03-07 13:09:43
【问题描述】:


我尝试通过 AVAudioPlayer 构建音乐播放器。我的音频播放器有效!现在我尝试构建倒带功能,这是一个双功能按钮:

  1. 单击:播放器从头开始 (player.currentTime = 0)(有效)
  2. Lo​​ngpess:播放器以0.5s的步长开始倒带,如果松开按钮,则结束“倒带过程”

我的代码(摘要)

var player = AVAudioPlayer()
@IBOutlet weak var rewindButton: UIButton!

override func viewDidLoad() {
        super.viewDidLoad()
        let tapGesture = UITapGestureRecognizer(target: self, action:    #selector(rewindTapAction))  //Tap function will call when user tap on button
        let longGesture = UILongPressGestureRecognizer(target: self, action: #selector(rewindLongPressAction(_:))) //Long function will call when user long press on button.
        tapGesture.numberOfTapsRequired = 1
        rewindButton.addGestureRecognizer(tapGesture)
        rewindButton.addGestureRecognizer(longGesture)
} 

@objc func rewindTapAction(){
    print("tapped")
    player.currentTime = TimeInterval(0)
}

@objc func rewindLongPressAction(_ gestureRecognizer: UILongPressGestureRecognizer){
    print("longpress")
    var rewindTimer : Timer!

    if gestureRecognizer.state == .began{
        print("longpress started")

        rewindTimer = Timer.scheduledTimer(withTimeInterval: 0.1, repeats: true, block: { Timer in
                            self.player.currentTime = TimeInterval( self.player.currentTime - 0.5)
                            print("timer")
                        })

    }else if gestureRecognizer.state == .ended || gestureRecognizer.state == .cancelled{
        print("longpress ended")
        rewindTimer.invalidate()
    }

}




我的问题是:

释放快退按钮(长按)后,快退计时器不会停止。为什么?

【问题讨论】:

    标签: swift timer avaudioplayer long-press


    【解决方案1】:

    您应该在 rewindLongPressAction 函数的范围之外定义 rewindTimer。当您的函数再次以手势状态 .ended 被调用时,它不再具有对 rewindTimer 的相同引用。

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多