2017-04-04 109 views
0

我正在創建一個Apache Cordova應用程序。我添加了InAppBrowser插件和條形碼掃描器插件,該插件是通過跨瀏覽器通信從InAppBrowser內部打開的頁面調用的。它在Android中運行得非常好。但是當在iOS中運行時,InAppBrowser就像一個模態彈出窗口,不會讓條形碼掃描器出現,直到InAppBrowser關閉/解除。科爾多瓦iOS - InAppBrowser始終處於頂級問題

我已經確認條形碼掃描儀即使在後臺工作,但它不會出現,因爲InAppBrowser總是在最上面。

我在想,有可能是一種變通方法給條形碼掃描儀插件最大z索引,但我無法弄清楚如何。

我也嘗試隱藏InAppBrowser,但它不適用於iOS。

cordova.InAppBrowser.hide(); 

我的想法是擴展我的網站,以便在從其移動應用運行時使用原生功能。

回答

0

我忘了在這裏添加答案。但我第二天就修好了。解決方法是非常簡單的,我改變InAppBrowser的隱藏和顯示方法如下:

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

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

}

0

我確實有同樣的問題。已經有一個問題在https://issues.apache.org/jira/browse/CB-12586開放,這幫助我解決了這個問題。

問題的所有者通過更改iOS文件夾中InAppBrowser插件的hide()方法的代碼(例如YourApp/platforms/ios/YourApp/Plugins/cordova-plugin-inappbrowser/CDVInAppBrowser),找到了解決方案。米)。應用建議的解決方案我的隱藏方法看上去像這樣經過:

- (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]; 
     } 
    }); 
} 

下一個「科爾多瓦建」後,隱藏方法爲我工作。讓我知道,如果你找到了更好的解決方案。