是否可以控制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)
感谢您的帮助!
答案 0 :(得分:0)
如果您可以使用3.2或更高版本,UIGestureRecognizer套件应该允许这样做。有一系列调用允许某些手势取消或与其他手势互操作,您应该能够创建一个自定义对角线滑动手势,取消其他手势,但实际上并没有做任何事情。
在3.2之前,UIScrollView手势处理基本上没有记录。您可以通过标准touchesBegan UIResponder调用来检测点击而不是移动。我认为一旦它检测到移动,它就会占用运行循环并捕获所有事件,绕过正常的事件链。
请注意,始终会调用setContentOffset。您可以创建UIScrollView的子类,当您在事件跟踪期间检测到对角线偏移时,不要将其传递给super。我不知道这是否会起作用,或者它有多好,但它还是可以开始的。