1

我遵循了这个很棒的教程,终于设法实现了一个 3 独立行的可滚动界面。

不过,我遇到了一个问题,因为该教程的关键是使用方法:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{
    NSLog(@"in hitTest");
    if ([self pointInside:point withEvent:event]) {
        return _scrollView;
    }
    return nil;
}

为了即使在滚动视图区域之外也能处理滚动。事实上,我的行充满了 UIButton,并且它们的 TouchUpInside 事件与命中事件混在一起。有没有办法让这个方法识别这些事件并拒绝它们,让它们传播给合法的委托?

4

1 回答 1

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

于 2011-12-02T12:25:48.573 回答