0

我真的需要一些帮助,因为我对 iOS 和 Phonegap 开发非常陌生,我能找到的关于 Xcode 警告的所有主题都是关于 Objective-C 的。

由于我的应用程序主要是用 Cordova (Phonegap) 编写的,因此这些解决方案并没有真正的帮助。

那么,有什么要说的:

我有一个简单的开始屏幕,您可以在其中启动条形码扫描仪。结果(最后总是一个url)应该显示在cordova的inAppBrowser中。

如果我window.open()用“_self”调用它,它可以工作,但据我所知,很难回到开始屏幕。所以我想用 inAppBrowser 调用 url,所以有一个“完成”按钮,但是 Xcode 尖叫:

“警告:在演示过程中尝试在 <MainViewController: 0x1ed64730> 上显示 <CDVInAppBrowserViewController: 0x1ed97060>!”

这里是我调用 window.open() 函数的 JavaScript 代码...

app.initialize();

function demoScan() {
  try {
    var scanned = scan();
  } catch (e) {
    alert('scan failed');
  }
}

function scan() {
   var scanner = window.cordova.require("cordova/plugin/BarcodeScanner");
   scanner.scan(  function (result) {
      var ref = window.open(encodeURI(result.text),'_blank','location=yes');
        },
        function (error) {
          ("Scanning failed: " + error);
      });
   }

最后,我只需要一个(简单的)解决方案,当我在条形码扫描仪正在调用的网页上时返回起始页“index.html”。如果是通过 inAppBrowser 或者在 WebView 中带有自编码的“返回”按钮,我真的不在乎。

提前致谢!:)

4

1 回答 1

1

好的,我找到了答案。您必须在调用 inAppBrowser 之前设置超时:

setTimeout( function() { 
               var ref = window.open(encodeURI(result.text),'_blank','location=no');
            }, 500);

显然,iOS 需要一些时间来结束它正在做的任何事情,然后才能启动 inAppBrowser。在 Android 中,它可以在没有超时的情况下工作。

于 2013-08-21T06:14:46.600 回答