0

全部,

我有一个 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];


 }  
4

1 回答 1

1

这可能与 Apple 在模态演示期间选择处理键盘关闭的方式有关(即,当它通常隐藏时基本上不隐藏它。基本原理是在模态上下文中它可能会经常上下移动)。请参阅Modal Dialog Does Not Dismiss Keyboard该问题的已接受答案有一个很好的解释,我的答案在使用导航控制器时提供了一个很好的通用解决方案。

于 2012-06-15T16:49:45.730 回答