Ios5 &引用;应用程序试图以模态方式呈现一个活动控制器;当用户关闭通知中心时

Ios5 &引用;应用程序试图以模态方式呈现一个活动控制器;当用户关闭通知中心时,ios5,xamarin.ios,Ios5,Xamarin.ios,当用户将手机翻转到横向时,我会看到一个视图。它由位于导航控件堆栈顶部的UIViewController使用PresentViewController()表示 它工作正常,直到用户通过从手机屏幕顶部向下拖动来拉下通知中心,然后应用程序立即崩溃,出现MonoTouchException和以下消息: “引发Objective-C异常。名称:NSInvalidArgumentException原因:应用程序试图以模态方式呈现活动控制器” 在任何其他视图中拉下Notification Center时不会发

当用户将手机翻转到横向时,我会看到一个视图。它由位于导航控件堆栈顶部的UIViewController使用PresentViewController()表示

它工作正常,直到用户通过从手机屏幕顶部向下拖动来拉下通知中心,然后应用程序立即崩溃,出现MonoTouchException和以下消息:

“引发Objective-C异常。名称:NSInvalidArgumentException原因:应用程序试图以模态方式呈现活动控制器”


在任何其他视图中拉下Notification Center时不会发生此崩溃,但所有其他视图都位于导航控制器的堆栈上,并且不以模式显示。

通过进一步调试解决了此问题:

我订阅UIDeviceOrientationIDChangeNotification以了解手机何时旋转,并调用“DeviceRotated()”方法

结果是,当您拉下通知中心时,此通知再次被触发,即使手机没有实际改变旋转。我的代码没有预料到这一点,因此它试图在已经显示的情况下再次显示相同的横向视图,并引发异常

我将
&(this.PresentedViewController==null | | this.PresentedViewController==this)
添加到
if-then
中,该测试用于显示横向视图的正确情况,崩溃消失了