【问题标题】:Cell swipe event and button touch inside event单元格滑动事件和事件内的按钮触摸
【发布时间】:2016-01-07 10:36:40
【问题描述】:

我有一个带有 4 个 UIButtons 的表格单元格视图:

按钮有 Touch Up Inside 事件

@IBAction func increasDealRatingAction(sender:UIButton) {
    let buttonPosition = sender.convertPoint(CGPointZero, toView: self.tableView)
    if let indexPath = self.tableView.indexPathForRowAtPoint(buttonPosition) {
       ...
    }
}

我对每个单元格都有编辑操作:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    ...
    return [addToWishListAction, addToPurchasesAction, deleteAction]
}

问题是,当您向左滑动以显示“添加到愿望清单”、从星形按钮位置“删除”操作、也处理了单击事件或在您滑动按钮区域时未检测到滑动操作。

【问题讨论】:

  • 如果您使用的是 UISwipeGestureRecognizer 那么请使用默认的 tableviewSwipe 或者您可以使用第三方库来显示滑动按钮(如 SWTableViewCell)。

标签: ios swift uigesturerecognizer


【解决方案1】:

为按钮添加滑动手势识别器

let swipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: Selector("handleSwipes:")) // nil for selector is also possible
swipeGestureRecognizer.direction = .Left // Add this if you want only one direction
dealRatingButton.addGestureRecognizer(swipeGestureRecognizer)
// Add three star buttons

并实现gestureRecognizer(_:shouldReceiveTouch:) 以返回false

【讨论】:

  • 我添加了您的代码,但不明白这是什么 gestureRecognizer(_:shouldReceiveTouch:) ? handleSwipes 函数中应该包含什么?
  • 这是UIGestureRecognizerDelegate 中的一个方法。如果您什么都不想做,只需设置 nil 而不是选择器,正如我在评论中所写的那样
  • 正确使用这个肯定会至少解决你的第二个问题'滑动按钮区域时没有检测到滑动动作'。发布您尝试过的内容,否则无法解决任何问题。
  • 所以我添加委托方法:func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool { return false; } 并添加您的按钮代码。
  • 然后当我开始在按钮内滑动时,单元格忽略滑动和编辑按钮不显示。并在结束按钮单击事件触发。我需要在所有按钮下都有一个不可见的层,当我滑动时会打开编辑操作...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-03
  • 2022-12-11
  • 1970-01-01
  • 2017-06-06
  • 2016-07-10
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多