全,
我有一个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];
} 发布于 2012-06-16 00:49:46
这可能与苹果在模式演示期间选择如何处理键盘清除有关(即,当它通常会隐藏时,基本上不要隐藏它。基本原理是,在模态上下文中,它可能会频繁地上下波动)。请参阅Modal Dialog Does Not Dismiss Keyboard关于这个问题的公认答案有一个很好的解释,我的答案在使用导航控制器时提供了一个很好的通用解决方案。
https://stackoverflow.com/questions/11054937
复制相似问题