删除UILongPressGesture默认动作

时间:2017-03-24 13:55:33

标签: ios swift uigesturerecognizer

我有一个允许用户在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)
    }

这很有效,但我注意到即使手势被移除,我仍然可以长按表格单元格并移动它。它没有重新排列表格单元格,但我想阻止这种情况发生。

1 个答案:

答案 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...
    }
}