首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >禁用UIContextualAction

禁用UIContextualAction
EN

Stack Overflow用户
提问于 2019-02-22 13:50:51
回答 3查看 222关注 0票数 1

我试图禁用我拥有的UIContextualAction

代码语言:javascript
复制
let picture = UIContextualAction(style: .normal, title:  "  ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    // ...
})
picture.backgroundColor = .blue

我找不到任何在线启用或禁用它,我仍然希望它的存在,只是不希望用户点击它。这个是可能的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-02-22 13:56:33

我不确定它是否可以开箱即用,但作为一种解决办法,您可以让一个全局变量跟踪是否应该启用该操作,然后在操作的处理程序中检查该操作:

代码语言:javascript
复制
var isCamActionEnabled = false // declare globally, if you need to set this from outside the current scope
let picture = UIContextualAction(style: .normal, title:  "  ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    guard isCamActionEnabled else { return }
    // ...
})
票数 1
EN

Stack Overflow用户

发布于 2020-04-07 13:04:33

如果您需要在用户交互之后禁用它,您可以禁用视图用户的交互,直到下一个事件发生为止,例如,在我的示例中,我不得不禁用UIContextualAction,以防止在请求完成之前进行双击:

代码语言:javascript
复制
let picture = UIContextualAction(style: .normal, title:  "  ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    view.isUserInteractionEnabled = false
    // create function with escaping completion handler and enable it again 
    exampleFunction() {
        view.isUserInteractionEnabled = true
    }
})
票数 1
EN

Stack Overflow用户

发布于 2019-02-22 14:12:21

我还是想要它的存在,只是不想让用户点击它

如果上下文操作图标存在,您不能阻止用户点击它(您会做什么,伸出手并抓住用户的手?)然而,仅仅因为用户点击上下文操作并不意味着您必须做任何回应。

上下文操作对象有一个完成处理程序;如果您不想对抽头做任何事情,那么不要在该完成处理程序中做任何事情。

代码语言:javascript
复制
let picture = UIContextualAction(style: .normal, title:  "  ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
    // do nothing
})

但是,我不能推荐这种方法,因为它的界面非常差。如果用户可以看到一个东西,用户希望能够点击它并让它做出响应。一个什么都不做的按钮会感到“坏了”。最好是做您不想做的事情,也就是说,在用户不应该执行此操作的情况下,首先不要显示它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54828549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档