禁用 UIContextualAction
Disable UIContextualAction
我正在尝试禁用我拥有的 UIContextualAction
:
let picture = UIContextualAction(style: .normal, title: " ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
// ...
})
picture.backgroundColor = .blue
我在网上找不到任何东西来启用或禁用它,我仍然希望它存在,只是不想让用户点击它。这可能吗?
我不确定它是否可以开箱即用地禁用,但作为一种解决方法,您可以使用一个全局变量来跟踪是否应启用该操作,然后在该操作的处理程序中进行检查:
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 }
// ...
})
I still want it present, just don't want the user to tap on it
您不能阻止用户点击 如果上下文操作图标存在(您会怎么做,伸出手抓住用户的手?)。但是,仅仅因为用户点击上下文操作并不意味着您必须做任何响应。
上下文操作对象有一个完成处理程序;如果您不想对点击做出任何响应,请不要在该完成处理程序中执行任何操作。
let picture = UIContextualAction(style: .normal, title: " ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
// do nothing
})
但是,我不推荐这种方法;这是极其糟糕的界面。如果用户可以看到某物,则用户希望能够点击它并让它做出响应。什么都不做的按钮会感觉 "broken"。不如做你说不想做的,就是在用户不应该做这个动作的情况下,一开始就不要表现出来。
如果您需要在用户交互后禁用它,您可以禁用视图用户的交互直到下一个事件发生,例如,在我的情况下,我必须禁用 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
}
})
我正在尝试禁用我拥有的 UIContextualAction
:
let picture = UIContextualAction(style: .normal, title: " ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
// ...
})
picture.backgroundColor = .blue
我在网上找不到任何东西来启用或禁用它,我仍然希望它存在,只是不想让用户点击它。这可能吗?
我不确定它是否可以开箱即用地禁用,但作为一种解决方法,您可以使用一个全局变量来跟踪是否应启用该操作,然后在该操作的处理程序中进行检查:
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 }
// ...
})
I still want it present, just don't want the user to tap on it
您不能阻止用户点击 如果上下文操作图标存在(您会怎么做,伸出手抓住用户的手?)。但是,仅仅因为用户点击上下文操作并不意味着您必须做任何响应。
上下文操作对象有一个完成处理程序;如果您不想对点击做出任何响应,请不要在该完成处理程序中执行任何操作。
let picture = UIContextualAction(style: .normal, title: " ", handler: { (ac: UIContextualAction, view: UIView, success:(Bool) -> Void) in
// do nothing
})
但是,我不推荐这种方法;这是极其糟糕的界面。如果用户可以看到某物,则用户希望能够点击它并让它做出响应。什么都不做的按钮会感觉 "broken"。不如做你说不想做的,就是在用户不应该做这个动作的情况下,一开始就不要表现出来。
如果您需要在用户交互后禁用它,您可以禁用视图用户的交互直到下一个事件发生,例如,在我的情况下,我必须禁用 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
}
})