长按手势识别器干扰UITableView中的滚动

cod*_*ood 6 objective-c uitableview uigesturerecognizer ios swift

我在向UITableView添加长按手势时遇到了麻烦.嗯,从技术上讲,我确实有一个长按手势识别器,但我将最小水龙头持续时间设置为0.08.我之所以这样做,是因为我希望在敲击和按住单元格时采取相同的一般操作,但操作只会根据单元格的持续时间而改变.无论如何,这是我添加手势识别器(in viewDidLoad)的代码:

    var longPress:UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: "handleLongPress:")
    longPress.minimumPressDuration = 0.08
    longPress.delegate = self
    longPress.cancelsTouchesInView  = false
    self.tableView.addGestureRecognizer(longPress)
    self.tableView.panGestureRecognizer.requireGestureRecognizerToFail(longPress)
Run Code Online (Sandbox Code Playgroud)

在我的handleLongPress()函数中,我得到CGPoint,其中有一个长按,然后从那里获取tableView单元格.

所以基本上,如果我快速滚动,(就像我轻弹屏幕一样),表格视图滚动得很好.如果我尝试慢慢滚动,长按事件会触发,我无法滚动.

我想做的就是能够慢慢滚动,我希望tableviews默认滚动手势可以覆盖任何长按.

谢谢!

Emi*_*aez 1

ScrollViews 有一个panGestureRecognizer属性,您可以requireGestureRecognizerToFail使用滚动视图的 panGestureRecognizer 作为参数来调用长按识别器,并且仅当滚动视图中的平移手势失败时才会触发。