我正在使用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上運行。
謝謝大衛。試過[[[appDelegate window]子視圖] objectAtIndex:1];它給了我陣列索引錯誤。將objectAtIndex置爲0.沒有得到錯誤,但是出現空白頁面。最後在挖掘Cordova iOS代碼幾個小時後。用它來解決這個問題:UIView * appView = self.viewController.view。它現在像以前的iOS 5/6和7一樣工作。 – user2261927
如果您從索引中獲取數組,那麼您錯過了我添加的條件,但在任何情況下,您的解決方案都會更好。令我困惑的是,爲什麼close()中的問題導致Web視圖無法正常加載。當我做到了,它裝得很好,但只是不能正常關閉。 –
發現與WLCordovaAppDelegate有關的問題。它不像以前那樣讓viewController共享相同的wevViews。所以這是Codova管理webViews的方式。你可以隱藏/顯示/添加動畫... – user2261927