2013-11-23 28 views
0

使用Worklight v6.0.0代碼示例/教程「將服務器生成的頁面集成到混合應用程序中」(http://public.dhe.ibm.com/software/mobile-solutions/worklight/docs/v600/IntegratingServerGeneratedPagesProject.zip)允許集成Web內容。代碼示例在iOS 7/XCode 5中不起作用。顯示Web視圖疊加頁面時,它顯示白色空白頁面。IBM Worklight 6.0.0 - 使用iOS不工作的WebViewOverlay示例代碼

但是,Android版本正常工作。

我怎樣才能讓WebViewOverlay在iOS 7/XCode 5上工作?

回答

0

我正在使用Worklight Studio 6.0.0.20130926-1933,Xcode 5.0.2和iOS 7.0.3模擬器。當我第一次導入項目時,它在啓動時崩潰。這是關於iOS7的,因爲它在iOS6模擬器上工作。

我刪除了iPhone環境並重新創建了它(包括iPhone環境的css和js文件夾中的自定義設置,並在Xcode中安裝了WebViewOverlay插件),並修復了崩潰問題。在這一點上,應用程序運行良好,WebViewOverlay打開並填充了內容。但它不會關閉。我不得不修改close()方法中WebViewOverlayPlugin.m

- (void)close:(CDVInvokedUrlCommand*)command{ 
    NSLog(@"WebViewOverlayPlugin :: close"); 

    WLCordovaAppDelegate *appDelegate = (WLCordovaAppDelegate*) [[UIApplication sharedApplication] delegate]; 

    if ([[[appDelegate window] subviews] count] > 1) { 
     UIView *appView = [[[appDelegate window] subviews] objectAtIndex:1]; 

     for (UIView *view in [appView subviews]){ 

      if (view.tag==12345) { 

       [view removeFromSuperview]; 
      }} 
    } 
} 

它看起來像什麼改變,因爲樣品是書面的,並objectAtIndex:0需要更改爲:objectAtIndex:1。實際上知道客觀c的人可能可以在我添加的條件(並解釋爲什麼發生這種變化)方面做得更好,但是隨着iPhone環境的重新創建,以及close()的上述實現似乎都可以在iOS 7上運行。

+0

謝謝大衛。試過[[[appDelegate window]子視圖] objectAtIndex:1];它給了我陣列索引錯誤。將objectAtIndex置爲0.沒有得到錯誤,但是出現空白頁面。最後在挖掘Cordova iOS代碼幾個小時後。用它來解決這個問題:UIView * appView = self.viewController.view。它現在像以前的iOS 5/6和7一樣工作。 – user2261927

+0

如果您從索引中獲取數組,那麼您錯過了我添加的條件,但在任何情況下,您的解決方案都會更好。令我困惑的是,爲什麼close()中的問題導致Web視圖無法正常加載。當我做到了,它裝得很好,但只是不能正常關閉。 –

+0

發現與WLCordovaAppDelegate有關的問題。它不像以前那樣讓viewController共享相同的wevViews。所以這是Codova管理webViews的方式。你可以隱藏/顯示/添加動畫... – user2261927

相關問題