【问题标题】:UISwipeGestureRecognizer Custom Action with UITableView带有 UITableView 的 UISwipeGestureRecognizer 自定义操作
【发布时间】:2015-03-17 06:57:51
【问题描述】:

我正在尝试添加滑动手势(左/右)以隐藏/显示我的侧边菜单。 我让它在 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)

这是我的选择器方法:

func toggleSideMenu() {
    println("ENTER SWIPE")
    toggleSideMenuView()
}

我也做过这个:

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

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return false
}

但是,当我向左或向右滑动时,我的选择器菜单“toggleSideMenu()”永远不会被调用。

P.S:我也尝试直接在我的 UITableViewCell 上添加这些滑动手势,但效果不佳。

有人有想法吗?非常感谢您的宝贵时间!

【问题讨论】:

  • rightSwipeGestureRecognizer.delegate = self;
  • 在我的项目中,这个函数是用这个代码调用的..
  • 你的tableview是否实现了滑动删除?
  • 感谢基里特·莫迪!我必须添加委托方法 shouldRecognizeSimultaneouslyWithGestureRecognizer 以返回 true 以使其也能正常工作!

标签: ios uitableview swift uigesturerecognizer uiswipegesturerecognizer


【解决方案1】:

感谢基里特·莫迪。这是我的问题的解决方案

添加:

leftSwipeGestureRecognizer.delegate = self    
rightSwipeGestureRecognizer.delegate = self

然后添加 UIGestureRecognizerDelegate 委托方法:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool {
    return true
}

【讨论】:

    【解决方案2】:

    对我有帮助

    (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
    {
    return YES;
    }
    

    因为我有两个手势。一个来自幻灯片菜单,一个来自当前 VC。所以幻灯片菜单中的那个杀死了 VC 的手势。

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 1970-01-01
      • 1970-01-01
      • 2012-05-03
      • 2023-03-18
      • 2013-02-23
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多