我跟着this great tutorial,我终于设法实现了一个3个独立的行可滚动界面。
我有一个问题,因为该教程的关键是使用方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
NSLog(@"in hitTest");
if ([self pointInside:point withEvent:event]) {
return _scrollView;
}
return nil;
}
即使在scrollview区域外也能处理滚动。 事实上,我的行充满了UIButton,他们的TouchUpInside事件与点击事件混在一起。有没有办法让这个方法识别这些事件并拒绝它们,让它们传播给合法的委托?
答案 0 :(得分:2)
您应该按如下方式实施-hitTest:withEvent:
方法:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *superView = [super hitTest:point withEvent:event];
if (superView == self)
return _scrollView;
return superView;
}
这将允许在UIScrollView的子视图中进行交互。