2014-09-30 12 views
0

하위 뷰로 MainViewController (A)와 다른 DetailedViewController (B)가 있습니다. "B"에서는 UIButton, UILabel 및 일부 UIView와 같은 일부 UIControls가 포함 된 UIView가 있습니다.UIView에서 버튼을 제외하고 터치 이벤트를 무시합니다.

버튼 클릭을 제외하고이 UIView 내의 모든 터치 이벤트를 무시해야하며 UIView 외부를 클릭하면 하위 뷰를 제거해야합니다.

어떻게하면됩니까?

답변

0

옵션보기 컨트롤러에서 사용자 정의보기를 설정할 수 있습니다. 해당 뷰에서 hittest 함수를 재정의 할 수 있습니다.

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *resultView = [super hitTest:point withEvent:event]; 

    if (![resultView isKindClass:[UIButton class]]) 
    { 
     resultView = nil; 
    } 

    return resultView; 
} 

버튼에없는 터치는 무시됩니다. 그러나 그 아래에 스크롤 뷰가 있고 버튼을 드래그하면 스크롤 뷰는 무시됩니다.