当用户下拉通知中心时,“应用程序尝试以模态方式呈现活动控制器”

时间:2012-05-28 22:12:59

标签: ios5 xamarin.ios

我有一个视图,当用户将手机翻转为Landscape时会显示该视图。它由一个UIViewController呈现,它通过使用PresentViewController()在导航控件堆栈之上。

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

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

在任何其他视图中下拉通知中心时不会发生此崩溃,但所有其他视图都在导航控制器的堆栈上,而不是以模态方式显示。

1 个答案:

答案 0 :(得分:2)

通过更多调试来计算出来:

我订阅了UIDeviceOrientationDidChangeNotification以找出手机何时被旋转并调用“DeviceRotated()”方法。

事实证明,当你下拉通知中心时,此通知会再次被触发,即使手机没有实际改变轮换。我的代码没有预料到这一点,所以它试图在显示时再次呈现相同的Landscape View,并抛出异常。

我将&& (this.PresentedViewController == null || this.PresentedViewController == this)添加到if-then,以测试适当情况以呈现横向视图,然后崩溃就消失了。