UITableView单手势行滑动动作

时间:2016-09-01 15:25:57

标签: ios uitableview

我正在尝试在我的UITableView中实现单手势滑动操作,您可以在其中滑动以显示操作按钮,并继续一直滑动以激活默认操作(例如“删除”或“标记为已读”在邮件中。

我正在我的代表中实施-tableView:editActionsForRowAtIndexPath:。我的按钮出现,当我点按它时它会起作用,但它不会被完全滑动激活。

我已经在我的数据源中使用-tableView:commitEditingStyle:forRowAtIndexPath:-tableView:canEditRowAtIndexPath:进行了尝试。只有后者被调用,但似乎没有任何区别。

我还需要做些什么吗?或者使用标准API实际上无法实现此行为?

1 个答案:

答案 0 :(得分:0)

我会检查手势识别器的目标功能中的滑动是否超过了某个阈值。

试试这个

func swipeRight(sender: UIGestureRecognizer){
    let threshold : CGFloat = 100;
    var startLocation = CGPoint()
    if (sender.state == UIGestureRecognizerState.Began){
        startLocation = sender.locationInView(self.view)
    }else if (sender.state == UIGestureRecognizerState.Ended){
        let stopLocation = sender.locationInView(self.view)
        let distanceX = stopLocation.x - startLocation.x
        let distanceY = stopLocation.y - startLocation.y
        let distance = sqrt(distanceX*distanceX + distanceY*distanceY )
        if (distance > threshold ){
            //Delete or Edit Row Here
        }
    }
}