单元格滑动事件和事件内的按钮触摸
Posted
技术标签:
【中文标题】单元格滑动事件和事件内的按钮触摸【英文标题】: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)。 【参考方案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;
并添加您的按钮代码。
然后当我开始在按钮内滑动时,单元格忽略滑动和编辑按钮不显示。并在结束按钮单击事件触发。我需要在所有按钮下都有一个不可见的层,当我滑动时会打开编辑操作...以上是关于单元格滑动事件和事件内的按钮触摸的主要内容,如果未能解决你的问题,请参考以下文章