0

X 비활성 상태 후에 나타나는 암호 화면을 표시하려고합니다. 나는 presentViewController : animated : completion :을 루트보기 컨트롤러에 사용하며, popover가 이미 표시되는 경우를 제외하고는 예상대로 작동합니다. 막대 버튼 항목에서 표시된 팝업은 표시된 암호 코드 화면 위에 나타납니다.팝업보기가 표시된보기 위에 표시되지 않도록합니다.

보기 컨트롤러를 표시 할 때 표시되는 모든 팝업을 닫거나 숨길 수 있습니까?

답변

1

첫 번째 창 위에 두 번째 창을 만들고 추가하십시오. 두 번째 창에 암호 코드 화면을 표시하십시오. 이렇게하면 첫 번째 창에서 모든보기에 표시 될 수 있습니다. 암호 화면을 닫을 때 새 창을 제거하고 첫 번째 키를 다시 만드십시오.

+0

이 창을 어떻게 추가합니까? UIApplication의 windows 속성은 읽기 전용입니다. – livings124

+0

makeKeyAndVisible이 자동으로 실행됩니다. 이것은 작동하는 것 같습니다 - 유일한 문제는 내가 rootViewController로 설정 한 뷰 컨트롤러의 버튼이 touch에 응답하지 않는다는 것입니다 (그리고 나는 명시 적으로 enableUserInteraction을 설정했습니다). – livings124

+0

명시 적으로 창의 크기를 설정하여 터치 문제에 대한 응답을 해결했습니다. 감사! – livings124

1

popover에 대한 참조가 있으십니까? 그런 다음 패스 코드 오버레이를 구입할 때

[popover dismissPopoverAnimated:NO]; 

으로 전화하면됩니다.

편집

파단을 통해 반복하고 팝 오버를 dimiss 수 있는지보고. 나는이 일이 단지 칙칙한 것처럼 일을하는 다른 방법을 찾으려고 정말로 권하고 싶습니다. 하지만 작동하지 않아야합니다.

for (UIView* view in self.view.subviews) { 
    if([view respondsToSelector:@selector(dismissPopoverAnimated:)]){ 
     [(UIPopoverController*)view dismissPopoverAnimated:NO]; 
    } 
} 
+0

나는 이것을 더 일반적인 것으로 만들기를 바랐다. 많은 관련없는 popovers를 가진 많은 잠재적 인 전망이있다. – livings124

+0

모든 하위 뷰를 루핑하고 dismissPopoverAnimated :에 응답하는지 확인하면 정말 불쾌한 방법이 있습니다. 편집을 참조하십시오. – Josh

+0

나는 그것이 길일 것이라고 생각했다. 나는 UIPopoverController를 찾을 때까지 뷰 컨트롤러 자식보기 컨트롤러를 반복 해 보았다. popover 컨트롤러에는 부모 뷰 컨트롤러가 있지만 같은 뷰 컨트롤러에는 자식보기 컨트롤러로 UIPopoverController가없는 것으로 보인다. 그게 왜 일어날까요? – livings124

1

NSNotification은이 문제에 대한 유용한 도구입니다. 팝업을 제시하는 모든 의견이나 컨트롤러에 WillPresentPasscodeScreen과 같은 알림을 수신하고 통지가 들어올 때 팝업을 닫는 방법을 구현하십시오. 그런 다음 패스 코드 VC를 표시하기 전에 WillPresentPasscodeScreen 알림을 게시하십시오 popovers, 당신이 어디에있는 응용 프로그램에 관계없이.

관련 문제