我已經得到了全部具有用戶互動欄目(兒童)和所有全屏子視圖的堆棧。問題是,如果我降落在在堆棧的頂部的非交互部分,它不會再傳播整個堆棧的其餘部分是觸摸。我的設置:通過兄弟子視圖傳播觸摸事件?
視圖甲 --view B(全屏幕的容器,而不是本身交互但具有交互式子視圖) ----視圖B1(交互式) ----視圖B2(交互式) - 視圖C(與B相同) ----視圖C1(交互式) ----視圖C2(交互式)
B和C均爲全屏,但B1/B2/C1/C2都只是小屏幕的各個部分。
[a addSubview:b];
[a addSubview:c];
如果我碰任何東西C1/C2之外,我想觸摸事件,然後檢查是否到達全國各地B(B1/B2)的內部,而是它只是回A,並然後到A的父母。是否有可能做到這一點?如果我設置userInteractionEnabled NO在C,但在是C1/C2,它不會給那些內任何電話或者,雖然在這種情況下,則B會得到觸摸,符合市場預期。
編輯:截止了手動遍歷視圖棧檢查僅適用於某些子視圖,而不是所有的人:
- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
if (self != self.topCustomViewsContainer) {
for (UIView *v in self.createdSubviews) {
CGPoint newPoint = point;
newPoint.x -= v.frame.origin.x;
newPoint.y -= v.frame.origin.y;
UIView *hit = [v hitTest:newPoint withEvent:event];
if (hit)
return hit;
}
return nil;
}
return [super hitTest:point withEvent:event];
}