[英]Long Press Gesture Recognizer Interfering With Scroll in UITableView
我在向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单元格。
所以基本上,如果我快速滚动,(就像我轻弹屏幕一样),表格视图滚动得很好。 如果我尝试慢慢滚动,长按事件会触发,我无法滚动。
我想做的就是能够慢慢滚动,我希望tableviews默认滚动手势可以覆盖任何长按。
谢谢!
ScrollViews具有panGestureRecognizer
属性,您可以使用scrollView的panGestureRecognizer作为参数在长按识别requireGestureRecognizerToFail
上调用requireGestureRecognizerToFail
,只有在滚动视图中的平移手势失败时才会触发。
此类别可能会解决您的问题:
@interface UITableView (CellSwipeAdditions)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer;
@end
@implementation UITableView (CellSwipeAdditions)
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
return YES;
}
@end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.