작동하는 탭 막대 앱이 있습니다. 각 탭은 UINavigationController
이며 루트보기는 UIViewController
인 경우가 많으며 UITableViewController
인 경우가 많습니다.터치 이벤트를 사용하지 않는 전체 화면 UIView 하위 클래스
일부 작업이 완료 될 때까지 무슨 일이 일어나고 있는지에 대한 메시지가있는 전체 화면 "베일"을 표시하려는 인스턴스가 있습니다. 요점은 작업 시작 지점에서 벗어날 UI의 모든 터치를 삼키는 것입니다.
베일은 UIView 하위 클래스입니다. 클래스의 싱글 톤 인스턴스가 하나 있습니다. 표시되면 UITabBarController
보기의 하위보기로 삽입합니다. 보기가 포함 된 전체 UI, 탭 표시 줄에 나타납니다. 큰!
여기에 문제가 있습니다. 탭과 UI 변경 사항을 탭할 수 있습니다. 내가 예상했던 것은 베일의 견해가 그 감동을 삼킨 것일뿐입니다.
저는 베일 클래스에 {Began | Ended | Moved | Canceled} 메서드 (무방 방법)를 구현했지만 터치는 여전히 탭 막대에 의해 선택되고 솔직히 모든 객체에 의해 선택됩니다 언제든지 만날 수 있습니다.
나는 또한 nextResponder, hitTest : withEvent : 등등을 비롯한 여러 가지 다른 메소드를 무효화하려고 시도했습니다.
나는이 시점에서 다소 혼란 스럽다. 나는 누군가가 현자를 조언 해주기를 바라고있다. :-)
감사합니다.
@ Kevin-Ballard : 고마워요. 그래서 저는 베일을 베네치아 창문의 서브 뷰로 삽입하는 것과 같은 시각 효과를 얻었습니다. 그리고 베일의'userInteractionEnabled' 플래그가 YES로 설정됩니다. 터치 처리 메서드의 null 구현을 주석 처리했습니다. 접촉은 계속해서 기본보기로 전달됩니다. 다른 생각? –
@MarkGranoff : null 구현을 그대로두면 실패한다고도 가정합니까? 창문에 그걸 넣었 니? 슈퍼 뷰에 UIGestureRecognizer가 있다면 당신의 행동에 대해 생각할 수있는 가장 큰 이유는 당신이 윈도우의 루트에 있다면 그렇다고 볼 수 없습니다. 제가 생각할 수있는 유일한 또 다른 것은 당신의 알파입니다. 보기에 '알파'속성을 설정 했습니까? 'alpha'가'0.05' 이하이면, 뷰를 건너 뜁니다. 그것은'1'로 설정되어야하며 뷰는 배경색이 없어야합니다. –
@ Kevin-Ballard : 네, 구현이 null이거나없는 경우에도 동일한 동작입니다. 최소한 UIGestureRecognizers는 사용하고 있지 않습니다. alpha 속성이 설정되지만 0.65로 설정됩니다. 그래서 1로 설정하고 clearColor를 사용하여 어떤 일이 벌어지는지를 볼 수있었습니다. 여전히 실패합니다. 그런데보기에는 다음과 같은 코드가 삽입됩니다. [[myApp delegate] .window addSubview : [Veil theVeil]]'. 그것은 확실히 작동합니다 (나는 베일을 봅니다). 그리고 저는 그것을 "올바른 방법"으로 할 다른 방법을 생각할 수 없습니다. 정말 기괴한. –