我正在尝试禁用我拥有的UIContextualAction
:
let picture = UIContextualAction(style: .normal, title: " ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
// ...
})
picture.backgroundColor = .blue
我无法在线找到任何东西来启用或禁用它,我仍然希望它存在,只是不想让用户点击它。这可能吗?
答案 0 :(得分:1)
如果需要在用户交互后禁用它,则可以禁用视图用户的交互,直到发生下一个事件为止,例如,在我的情况下,我必须禁用UIContextualAction以防止双击直到请求完成:
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 :(得分:0)
我不确定是否可以立即禁用它,但作为一种解决方法,您可以使用全局变量来跟踪是否应启用该操作,然后在该操作的处理程序中进行检查:>
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 }
// ...
})
答案 2 :(得分:0)
我仍然希望它存在,只是不想让用户点击它
如果存在,您不能阻止用户点击 (您会怎么做,伸出手来抓住用户的手?)。但是,仅仅因为用户点击了上下文动作并不意味着您必须做任何响应。
上下文动作对象具有完成处理程序;如果您不想对点击做出任何反应,则不要在该完成处理程序中进行任何操作。
let picture = UIContextualAction(style: .normal, title: " ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
// do nothing
})
但是,我不推荐这种方法。这是非常差的界面。如果用户可以看到事物,则用户希望能够轻按并做出响应。不执行任何操作的按钮将感觉“断开”。最好按照您说的不想做的事情做,也就是说,在用户不应该执行此操作的情况下,请不要首先显示它。