【问题标题】:Cordova iOS - InAppBrowser always on top issueCordova iOS - InAppBrowser 始终是最重要的问题
【发布时间】:2017-08-29 16:24:01
【问题描述】:

我正在创建一个 Apache Cordova 应用程序。我添加了 InAppBrowser 插件和条码扫描器插件,它们通过跨浏览器通信从 InAppBrowser 中打开的页面调用。它在 Android 中运行得非常好。但是在 iOS 中运行时,InAppBrowser 就像一个模式弹出窗口,在 InAppBrowser 关闭/关闭之前不会让条形码扫描仪出现。

我已确认条码扫描器即使在后台也能正常工作,但它不会出现,因为 InAppBrowser 始终位于顶部。

我认为可能有一种解决方法可以为条形码扫描仪插件提供最大 z-index,但我不知道如何。

我也尝试隐藏 InAppBrowser,但它在 iOS 中不起作用。

cordova.InAppBrowser.hide();

我的想法是扩展我的网站,以便在从其移动应用程序运行时使用本机功能。

【问题讨论】:

    标签: ios cordova cordova-plugins barcode-scanner inappbrowser


    【解决方案1】:

    我忘了在这里添加答案。但我第二天就修好了。修复非常简单,我将 InAppBrowser 的隐藏和显示方法更改为以下内容:

    - (void)hide:(CDVInvokedUrlCommand*)command {
     self.inAppBrowserViewController.viewController.hidden = YES;
    }
    
    - (void)hide:(CDVInvokedUrlCommand*)command {
     self.inAppBrowserViewController.viewController.hidden = NO;
    

    }

    【讨论】:

      【解决方案2】:

      我确实有同样的问题。 https://issues.apache.org/jira/browse/CB-12586 已经存在一个问题,它帮助我解决了它。

      问题的所有者通过更改 iOS 文件夹中 InAppBrowser 插件的 hide() 方法的代码找到了解决方案(例如 YourApp/platforms/ios/YourApp/Plugins/cordova-plugin-inappbrowser/CDVInAppBrowser.m )。应用建议的解决方案后,我的隐藏方法如下所示:

      - (void)hide:(CDVInvokedUrlCommand*)command
      {
          if (self.inAppBrowserViewController == nil) {
              NSLog(@"Tried to hide IAB after it was closed.");
              return;
      
      
          }
          if (_previousStatusBarStyle == -1) {
              NSLog(@"Tried to hide IAB while already hidden");
              return;
          }
      
          _previousStatusBarStyle = [UIApplication sharedApplication].statusBarStyle;
      
          __weak CDVInAppBrowser* weakSelf = self;
      
          // Run later to avoid the "took a long time" log message.
          dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
              if (weakSelf.inAppBrowserViewController != nil) {
                  _previousStatusBarStyle = -1;
                  [weakSelf.inAppBrowserViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];
              }
          });
      }
      

      在下一次“cordova build”之后,隐藏方法对我有用。如果您找到更好的解决方案,请告诉我。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多