【问题标题】:InAppBrowser crashes on iOS 8.1 when using input type file使用输入类型文件时,InAppBrowser 在 iOS 8.1 上崩溃
【发布时间】:2015-01-01 20:09:48
【问题描述】:

我遇到了https://issues.apache.org/jira/browse/CB-7679 中描述的问题。

我有一个 PhoneGap 应用程序,该应用程序打开一个 InAppBrowser 窗口,该窗口具有 <input type="file" accept="image/*">。只要我点击“拍照”或“选择现有”,窗口就会关闭,我会收到以下错误消息:

Warning: Attempt to present
<UIImagePickerController: 0x137001c00> on <CDVInAppBrowserNavigationController: 0x136d2ed20>
whose view is not in the window hierarchy!

同样的代码适用于 iOS 7。我使用的版本如下:

  • iOS:8.1
  • PhoneGap:3.6.0
  • InAppBrowser:0.5.3

他们处理 https://github.com/apache/cordova-plugin-inappbrowser/blob/master/src/ios/CDVInAppBrowser.m 中的视图/控制器/某些东西的方式有什么问题吗? 看看插件代码,有什么我可以尝试的解决方法吗?

我真的不知道如何使用 Objective-C,但我已经尝试了一些在类似的非 PhoneGap 相关 iOS 问题中建议的解决方案,但没有任何运气。

【问题讨论】:

    标签: cordova ios8 inappbrowser


    【解决方案1】:

    经过反复试验和阅读类似问题后,我终于在https://stackoverflow.com/a/26238123/467650 找到了适合我的解决方案。

    诀窍是覆盖CDVInAppBrowserNavigationControllerdismissViewControllerAnimated

    -(void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion
    {
        if ( self.presentedViewController)
        {
            [super dismissViewControllerAnimated:flag completion:completion];
        }
    }
    

    Apache Cordova 的问题跟踪器中的问题:https://issues.apache.org/jira/browse/CB-7679

    【讨论】:

      【解决方案2】:

      此修复适用于装有 iOS 8.1 (12B411) 的 iPhone,但不适用于装有 iOS 8.1 (12B410) 的 iPad mini Retina iPad 从一开始就表现出不同的行为,整个应用程序崩溃,而不仅仅是 InAppBrowser 窗口意外关闭

      【讨论】:

      • 您是否使用 Xcode 6 构建应用程序?您是否能够从崩溃发生时获取日志?
      猜你喜欢
      • 1970-01-01
      • 2014-08-04
      • 2015-05-27
      • 1970-01-01
      • 2014-12-27
      • 2014-11-11
      • 1970-01-01
      • 2019-11-05
      • 1970-01-01
      相关资源
      最近更新 更多