July 9, 2010

ContainerView的HitTest

有时候想把Flash里的常用的用空Sprite来管理内容层级的方法用在iOS里,用一个空的UIView来管理UIView Hierarchy, 但是不希望这个空白的UIView吃掉下层的Touch Event, 这时候可以Override UIView的hitTest:withEvent:来解决.

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *hitView = [super hitTest:point withEvent:event];
if (hitView == self)
//non of my subView's bounds are hit, and I'm transparent
return nil;
else
return hitView;
}
view raw HitTest.m hosted with ❤ by GitHub

(Link)

但是iOS毕竟不比Flash,大多数的View还是Opaque的为妙,基本上不鼓励透明的Subview Overlap,而且也没有自动的Per-pixel检测的HitTest(也没必要),估计这个方法也只能用在Subview数量很少的Case里。

No comments: