当用户再次单击按钮时如何推迟隐藏视图?

维什瓦纳特·德什穆克

如果用户单击按钮,我会在 3 秒后使用DispatchQueue.main.asyncAfter. 但是,如果用户再次单击该按钮,我不想将隐藏活动再推迟 3 秒,因此之前的隐藏调用将被忽略。

我试过下面的代码,但它在前 3 秒后隐藏了视图。

    class MyView: UIView {
        private var hideControls: DispatchWorkItem?
        
        func displayControls() {
            isHidden = false
            hideControls?.cancel()
            
            hideControls = DispatchWorkItem {
                print("displayControls: DispatchWorkItem called ")
                self.isHidden = true
            }
            
            if let hideControls = hideControls {
                DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(3), execute: hideControls)
            }
        }
    }
路飞_064

如果你想忽略之前的工作,你可以使用 Timer,添加属性 timer,

var timer : Timer?

并在你的隐藏使用方法上。

        timer?.invalidate()
        timer = Timer.scheduledTimer(withTimeInterval: 3, repeats: false, block: {[weak self] (_) in
            #add the action that you want
            self?.isHidden = true
        })

兄弟

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当用户单击“后退”按钮返回上一个网页时,如何再次调用ajax?

当用户单击提交按钮时如何显示用户输入。当用户单击清除按钮时也清除消息。(Angularjs)

当用户单击按钮时如何显示上传的图像?

Ember.js 1.0.0:当用户单击视图时,隐藏“浮动”菜单视图

用户单击按钮时如何再次创建 Html 元素

当用户更改按钮时,onClick 再次执行

当用户已经单击10次时如何设置单击按钮的限制-Android

如何在单击按钮时显示和隐藏局部视图?

如何推迟表单输入绑定,直到用户单击“提交”按钮?

当用户单击“输入”按钮时触发按钮

当用户单击WebView Android中的文本框时如何隐藏键盘

当用户单击下拉菜单时如何隐藏下拉菜单

当用户单击下拉菜单的一侧时,如何隐藏下拉菜单?

当用户单击其他位置时如何使用jquery隐藏ul

当用户使用ShieldUI单击ChartLegend时,如何禁用隐藏/显示图表的功能?

当用户在按钮单击时输入无效的日期格式时如何显示验证错误?

当用户在DIV之外单击时,使用jQuery隐藏DIV

当用户在外部单击时隐藏相对布局,Android

当用户从文本区域的指定单词中删除字母时,如何重新隐藏按钮?

当用户单击单元格时,如何从表详细视图中的数组加载视频?

当用户单击单个项目时,如何在 textview 中显示列表视图数据

当用户单击按钮 vuejs 时,如何使对象中的项为真?

当用户单击 Objective C 中的 myLocation 按钮时如何执行操作?

当用户单击 react-router-dom 上的后退按钮时,如何更改组件的状态?

当用户单击时,如何从jquery ui对话框中获取按钮ID的值?

当用户单击按钮时,如何保存可重复使用的React组件?

Angular,当用户单击按钮或多次提交时如何处理?

当用户单击按钮时如何添加页面预加载器

当用户单击 react.js 中的按钮时如何动态添加输入字段