swift – 停止dispatch_after

我使用动画指定一个提示,以帮助与延迟的交互使用以下:
let delay = 1.8 * Double(NSEC_PER_SEC)
    let time = dispatch_time(disPATCH_TIME_Now,Int64(delay))
    dispatch_after(time,dispatch_get_main_queue()) {
        //call the method which have the steps after delay.

        self.rain.alpha = 0

        UIView.animateWithDuration(5,animations: {

            self.rain.alpha = 1

        })

        self.tip.startAnimating()

    }

但是,如果在动画开始之前用户触摸屏幕,我需要停止此延迟过程.

iOS 8和OS X优胜美地引入了dispatch_block_cancel,允许您在开始执行之前取消它们

您在类中声明一个变量,如下所示:

var block: dispatch_block_t?

Init块变量并在dispatch_after中提供:

block = dispatch_block_create(disPATCH_BLOCK_INHERIT_QOS_CLASS) {
  print("I executed")
}
let time: dispatch_time_t = dispatch_time(disPATCH_TIME_Now,Int64(5 * NSEC_PER_SEC))
dispatch_after(time,dispatch_get_main_queue(),block!)

之后,您可以取消它如下:

dispatch_block_cancel(block!)

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...