항상 상단에있는 뷰가 있어야합니다 (응용 프로그램을 디더링하는 데 사용됨). 대부분의 경우 훌륭하게 작동합니다. 내가 본 모든 뷰 컨트롤러는이 뷰의 레이어 아래에 표시됩니다. I는 메일보기 컨트롤러를 제공 할 때objective-c iOS 9에서 iPhone 톱 레벨 UIView 터치 터치 차단
topLevelWindow = [[UIApplication sharedApplication] keyWindow];
if(nil == topLevelWindow)
topLevelWindow = [[[UIApplication sharedApplication] windows] lastObject];
topView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, topLevelWindow.bounds.size.width, topLevelWindow.bounds.size.height)];
topView.backgroundColor = [UIColor blackColor];
topView.alpha = 0.5f;
topView.layer.zPosition = MAXFLOAT;
topView.userInteractionEnabled = false;
[topLevelWindow addSubview:topView];
그러나, 예상대로
MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
[self presentModalViewController:controller animated:YES];
이메일 입력 양식은 topView 층 아래에 정확하게 표시된다. 그러나, 내가 제시 한 다른 뷰 컨트롤러 (및 여러 레이어를 제시)와 달리, 메일 입력보기는 터치에 응답하지 않습니다. 따라서 사용자는 전자 메일을 보내거나 전자 메일보기 컨트롤러를 닫을 수 없습니다. 사용자는 앱을 죽이는 것 외에 다른 옵션이 없습니다. TopView가 모든 터치 입력을 차단하고있는 것과 같습니다.
어떤 일이 벌어지고 있는지에 대한 아이디어가 있습니까? BTW, 이것은 iOS 7에서 정상적으로 돌아 왔지만 iOS 9에서는 작동하지 않습니다.
어떤 생각이나 제안이라도 대단히 감사하겠습니다!