2012-11-10 3 views
0

UIButton 클릭으로 열리는 UIView가 있습니다. 이 특정보기와 그의 하위보기를 제외한 다른 모든 수퍼 뷰의 사용자 상호 작용을 비활성화하고 싶습니다. 어떻게 할 수 있습니까? 이보기가 사용자 터치에 응답하는 유일한보기가되게하십시오.특정보기를 제외한 모든 수퍼바이저 사용 안 함

감사합니다.

+0

보기에는 수퍼 뷰 하나만있을 수 있으므로 다른 모든 수퍼 뷰는 무엇을 의미합니까? 형제 자매의 견해를 의미합니까? – trojanfoe

+0

모달보기를 사용하여이 작업을 수행 할 수 있습니까? – nerak99

답변

5

(당신이 어떤 점에서 사용할 수에 다시 설정할 수 있도록 편집) ... 당신은 아마 뷰의 모든 형제 자매를 사용하지 않으려는 의견에 동의

- (void)setSiblings:(UIView *)view enabled:(BOOL)enabled { 

    for (UIView *sibling in view.superview.subviews) { 
     if (sibling != view) sibling.userInteractionEnabled = enabled; 
    } 
} 
+1

'if (형제! =보기) ... '? – trojanfoe

+0

예, 그렇습니다. 좋은 지적. – danh

+0

굉장해! 감사! –

3

내가 아는 당신은 이미 답을 받아 더 나은 (그리고 더 쉬운) 접근법은 새로운보기 전체 화면을 표시하는 것입니다. 맑은 배경으로 새보기를 만듭니다. 그런 다음이 전체 화면보기에 실제보기를 하위보기로 추가하십시오. 이렇게하면이 새로운 뷰를 표시하기 위해 기존 뷰를 망칠 필요가 없습니다. 그 뒤에있는 모든 것을 계속 볼 수 있지만 터치 이벤트는 명확하고 전체 화면으로 차단됩니다.

그런 다음이 전체 화면보기 (애니메이션 페이드 아웃?)를 제거하면 기존의 모든보기를 다시 엉망으로 만들 필요가 없습니다.

다른보기를 표시하기 위해 기존보기를 수정하지 않아도됩니다. 기존 뷰 중 하나에서 상호 작용이 실제로 중지되어야한다면 어떻게됩니까? "모달"보기를 닫을 때 상호 작용을 활성화하게됩니다.

+0

고마워, 나도 그것을 시도하자. 좋은 해결책 인 것 같습니다. –