UIView:让子视图接收触摸,但不是主视图?

我在这个结构中有几个包含视图的单元格:

  • 主要观点
  • 后视图
  • 正视图

细胞部分重叠。 这意味着单元格A的主视图将部分覆盖单元格B的前视图。像这样:

  • B主要观点
  • B backview
  • B前视图
    • 一个主要观点
    • 回顾
    • 前视图

我想拦截前视图和后视图上的触摸,但我希望主视图忽略它们。

(我尝试在主视图上禁用用户交互,但这也禁用了前视图和后视图)。

有小费吗?

我在这里找到了答案: http : //vectorvector.tumblr.com/post/2130331861/ignore-touches-to-uiview-subclass-but-not-to-its

基本上,我将主视图作为UIView的子类,并用此覆盖hitTest:

-(id)hitTest:(CGPoint)point withEvent:(UIEvent *)event { id hitView = [super hitTest:point withEvent:event]; if (hitView == self) return nil; else return hitView; } 

(注意,令人困惑的是你必须将UserInteractionEnabled设置为true,勾选,对于有问题的UIView是的!)