拦截UITableView滚动触摸

时间:2010-06-03 20:53:23

标签: objective-c uitableview ipad uiscrollview

是否可以控制UITableView何时在我自己的代码中滚动。

我试图获得垂直滑动滚动并且水平滑动传递到我的代码的行为(其中有许多示例)

BUT

我希望DIAGONAL滑动什么都不做,即UITableView甚至不应该开始滚动。

我试着在这里抓住它

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

scrollView.contentOffset.x始终为0,因此我无法检测到水平移动。

我还尝试了子类化UITableView并实现

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event

等。

但UITableView(我猜它的父UIScrollView)在通知触摸之前开始滚动?

要重新迭代,我希望在进行对角线滑动时锁定UITableView滚动,但要正常垂直滚动。

(这种行为可以在Tweetie(Twitter)中看到iPhone)

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果您可以使用3.2或更高版本,UIGestureRecognizer套件应该允许这样做。有一系列调用允许某些手势取消或与其他手势互操作,您应该能够创建一个自定义对角线滑动手势,取消其他手势,但实际上并没有做任何事情。

在3.2之前,UIScrollView手势处理基本上没有记录。您可以通过标准touchesBegan UIResponder调用来检测点击而不是移动。我认为一旦它检测到移动,它就会占用运行循环并捕获所有事件,绕过正常的事件链。

请注意,始终会调用setContentOffset。您可以创建UIScrollView的子类,当您在事件跟踪期间检测到对角线偏移时,不要将其传递给super。我不知道这是否会起作用,或者它有多好,但它还是可以开始的。

相关问题