所有
我有一个DetailViewController,其类设置为UIControl,并且有一个“backgroundTouched”IBAction方法可以完美地处理这些背景触摸事件。当我将DetailViewController更改为以模态方式呈现时,在FormSheet中,我将无法检测到背景触摸,因此键盘不会在背景触摸时消失。我认为原因在于,之前,DetailView占用了整个屏幕,因此所有委托方法都被触发但现在它以模态方式呈现,这些委托和IBAction方法不再能够通信。
我对问题的分析是否正确,如何获得报告事件的模态演示?
由于
//Give it a nav controller
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
/****************************************************
*
* Use a modal form presentation for form
*
*
****************************************************/
//Use a form sheet style for DetailView
[navController setModalPresentationStyle:UIModalPresentationFormSheet];
//flip-horizontal transition
[navController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:navController animated:YES completion:nil];
}
答案 0 :(得分:1)
这可能与Apple在模态演示中选择如何处理键盘消除有关(即,当它通常隐藏时基本上不隐藏它。理由是在模态上下文中它可能经常上下移动)。 请参阅Modal Dialog Does Not Dismiss Keyboard关于该问题的已接受答案有一个很好的解释,我的答案在使用导航控制器时提供了一个很好的通用解决方案。