使用UITableView的UISwipeGestureRecognizer自定义操作

fab*_*ice 1 uitableview uigesturerecognizer ios uiswipegesturerecognizer swift

我正在尝试添加滑动手势(左/右)以隐藏/显示我的侧边菜单.我在UIView上完美地工作了,但是,我遇到了UITableView的问题.

这是我的滑动手势添加到我的TableView的代码:

// Add right swipe gesture recognizer

    let rightSwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "toggleSideMenu")
    rightSwipeGestureRecognizer.direction =  UISwipeGestureRecognizerDirection.Right
    self.timelineTableView.addGestureRecognizer(rightSwipeGestureRecognizer)

    // Add left swipe gesture recognizer
    let leftSwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: "toggleSideMenu")
    leftSwipeGestureRecognizer.direction = UISwipeGestureRecognizerDirection.Left
    //sideMenuContainerView.addGestureRecognizer(rightSwipeGestureRecognizer)
    self.timelineTableView.addGestureRecognizer(leftSwipeGestureRecognizer)
Run Code Online (Sandbox Code Playgroud)

这是我的选择器方法:

func toggleSideMenu() {
    println("ENTER SWIPE")
    toggleSideMenuView()
}
Run Code Online (Sandbox Code Playgroud)

我也这样做了:

func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
    return UITableViewCellEditingStyle.None
}

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return false
}
Run Code Online (Sandbox Code Playgroud)

但是,当我向左或向右滑动时,我的选择器菜单"toggleSideMenu()"从不被调用.

PS:我也尝试直接在我的UITableViewCell上添加那些滑动手势,但它也不能正常工作.

有人有想法吗?非常感谢你的时间!

fab*_*ice 7

感谢Kirit Modi.这是我的问题解决方案:

添加:

leftSwipeGestureRecognizer.delegate = self    
rightSwipeGestureRecognizer.delegate = self
Run Code Online (Sandbox Code Playgroud)

然后添加UIGestureRecognizerDelegate委托方法:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    return true
}
Run Code Online (Sandbox Code Playgroud)