在hitTest:withEvent中拦截UIControlEventTouchUpInside:

时间:2011-09-11 22:27:37

标签: ios uiscrollview uievent

我跟着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事件与点击事件混在一起。有没有办法让这个方法识别这些事件并拒绝它们,让它们传播给合法的委托?

1 个答案:

答案 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的子视图中进行交互。