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

标签 ios objective-c uitableview swift uigesturerecognizer

我在向我的 UITableView 添加长按手势时遇到问题。好吧,从技术上讲,我确实有一个长按手势识别器,但我将最小点击持续时间设置为 0.08。我这样做是因为我想对点击和按住单元格执行相同的一般操作,但操作只会根据单元格的按住时间而改变。无论如何,这是我添加手势识别器的代码(在 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)

在我的 handleLongPress() 函数中,我在长按的位置获取 CGPoint,然后从中获取 tableView 单元格。

所以基本上,如果我快速滚动(就像我轻弹屏幕),表格 View 会很好地滚动。如果我尝试缓慢滚动,长按事件会触发,我无法滚动。

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

谢谢!

最佳答案

ScrollViews 有一个 panGestureRecognizer 属性,你可以在你的长按识别器上调用 requireGestureRecognizerToFail 并将 scrollView 的 panGestureRecognizer 作为参数,它只会在平移手势在 ScrollView 失败。

关于ios - 长按手势识别器干扰 UITableView 中的滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379446/

相关文章:

ios - 仅在 iPhone X (iOS 12) 上以横屏模式使用 UIImagePickerController 时应用程序崩溃

iOS SpreadsheetView,旋转时切纸

objective-c - 弹出当前 UIViewController 并推送另一个

ios - 在起始位置显示 CollectionViewCell

cocoa-touch - iPad 版 CGPathGetPathBoundingBox() 的替代方案 (iOS 3.2)

ios - iOS 地址簿中的网页

ios - 在 ios 中取消 NSURLConnection

iOS:带有图像错误的 CollectionView

ios - UITableView reloadData 不重新加载

swift - 如何从解析中检索 geoPoints 并将其存储在 tableView 中?