我有一个允许用户在UITableView单元格上打开和关闭UILongPressGesture的设置。我有一个简单的布尔,我正在检查是否应该添加或删除手势。
data Egg = Soft | Hard
instance Eq Egg where
(==)
长按法
// Gesture Recognizer
let longPress: UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressDetected(_:)))
if(options?.alphaOrder == false){
self.tableView.addGestureRecognizer(longPress)
}
else{
self.tableView.removeGestureRecognizer(longPress)
}
这很有效,但我注意到即使手势被移除,我仍然可以长按表格单元格并移动它。它没有重新排列表格单元格,但我想阻止这种情况发生。
答案 0 :(得分:0)
这里有一些半假的代码,显示了我的推荐。这样做更好,因为每次更新viewWillAppear
GestureRecognizer时都会这样做。
class CustomViewController: UIViewController {
var longPress: UILongPressGestureRecognizer
required init() {
super.init(nibName: nil, bundle: nil)
longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPressDetected(_:)))
self.tableView.addGestureRecognizer(longPress)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
longPress.isEnabled = (options?.alphaOrder == false)
}
func longPressDetected(_ sender: Any) {
...existing method...
}
}