如何实现像滚动和细胞攻丝行为的UITableView?

问题描述:

在UITableView中,您可以点击并按住表格单元格并取消点击并继续滚动,如果您移动手指。这怎么能用UIScrollView完成一个子视图?我能够做到这一点,所以你可以滚动,你可以点击子视图,但是后者的行为有问题 - 如果在轻敲和按住的同时移动手指,使滚动视图继续滚动。如何实现像滚动和细胞攻丝行为的UITableView?

我假设您在子视图上使用了UITapGestureRecognizer。滚动视图使用UIPanGestureRecognizer进行滚动。除非泛识别器失败,否则只需告诉水龙头识别器不要识别。

如果您靶向的iOS 5,这是很简单的:

[self.tapRecognizer requireGestureRecognizerToFail:self.scrollView.panGestureRecognizer]; 

如果您的iOS靶向的是旧版本,旧版本的UIScrollView没有panGestureRecognizer财产。相反,你必须通过滚动视图gestureRecognizers阵列搜索:

for (UIGestureRecognizer *recognizer in self.scrollView.gestureRecognizers) { 
    if ([recognizer isKindOfClass:[UIPanGestureRecognizer class]]) 
     [self.tapRecognizer requireGestureRecognizerToFail:recognizer]; 
} 
+0

我发现我没有打电话给requireGestureRecognizerToFail和滚动视图仍然工作的声像。任何想法,当这个电话是必要的? – Boon 2012-02-19 23:45:56