ios5 - "Application tried to present modally an active controller"当用户下拉通知中心时

标签 ios5 xamarin.ios

当用户将手机翻转到横向时,我会呈现一个 View 。它由位于导航控制堆栈顶部的 UIViewController 使用 PresentViewController() 呈现。

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

“抛出 Objective-C 异常。名称:NSInvalidArgumentException 原因:应用程序尝试以模态方式呈现事件 Controller ”

在任何其他 View 中下拉通知中心时,不会发生此崩溃,但所有其他 View 都位于导航 Controller 的堆栈上,并且不以模态方式呈现。

最佳答案

通过更多的调试解决了这个问题:

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

事实证明,当您拉下通知中心时,即使手机没有实际改变旋转方向,此通知也会再次触发。我的代码没有预料到这一点,因此它尝试在已经显示的情况下再次呈现相同的景观 View ,并引发异常。

我将 && (this.PresentedViewController == null || this.PresentedViewController == this) 添加到 if-then 中,用于测试正确的情况来呈现景观 View 和崩溃消失了。

关于ios5 - "Application tried to present modally an active controller"当用户下拉通知中心时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10790928/

相关文章:

c# - 如何在 Monotouch 下的 iPhone 上设置按钮背景图像?

iphone - 没有为 MFMailComposeViewController 调用 didFinishWithResult

iphone - 检测何时按下主页按钮 iOS

c# - Xamarin iOS 调试需要永远,不加载模拟器

xamarin.ios - Xamarin Mobile - 共享 PCL 中特定于平台的程序集?

c# - 在 MonoTouch 中将 PerformSelector 与 @selector 结合使用

ios - 如何在 iOS 版 MonoTouch/Xamarin 中导航命名空间?

ios5 - 如何暂停、停止和重置 AUFilePlayer?

iphone - UITableViewController 不加载数据

ios5 - 调用 UITextField 委托(delegate)程序时 iPhone 模拟器崩溃(带有 EXC_BAD_ACCESS)