2014-03-05 27 views
0

我是iOS開發新手,我正在創建一個具有本機登錄屏幕的webview應用程序。完成後,我需要關閉webview並返回到本地登錄屏幕。我已經看到這個問題的答案,但我不明白答案。這是回答後:Close UIWebView using javascript:window.close();從webview返回到原生應用程序

目前,我有這樣的:

NSURL *url = [NSURL URLWithString: @"http://mysite/redirector.php"]; 
NSString *postData =[[NSString alloc] initWithFormat:@"username=%@&password=%@",[_txtUsername text],[_txtPassword text]]; 
// Create the request object 
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url]; 
[request setHTTPMethod: @"POST"]; 
[request setHTTPBody: [postData dataUsingEncoding: NSUTF8StringEncoding]]; 

// create the web view 
UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
//Change Frame 
webView.frame = CGRectMake(webView.frame.origin.x, webView.frame.origin.y + 20, webView.frame.size.width, webView.frame.size.height); 

// Load the request 
[webView loadRequest: request]; 

//show the webview 
[self.view addSubview:webView]; 

我需要在上面的代碼更改爲使這項工作?

如何「通過shouldStartLoadWithRequest:」讀取[NSURL path]中的圖案「?

在此先感謝。

+0

請參閱http://stackoverflow.com/questions/10992339/how-to-intercept-button-click-inside-uiwebview-on-ios。希望這是你正在尋找的。 –

+0

謝謝,這看起來好像可能會訣竅,但我已在該頁面上添加了代碼,但是當我單擊關閉時沒有任何反應,我是否必須修改上面的代碼才能使其工作? – Benswana

+0

如果點擊按鈕,您可以從其超級視圖中移除網頁視圖。將webView中的[webView removeFromSuperView]放入:shouldStartLoadWithRequest:用URL檢查。 –

回答

0

只需添加下面的東西在你的代碼

NSURL *url = [NSURL URLWithString: @"http://mysite/redirector.php"]; 
       NSString *postData =[[NSString alloc] initWithFormat:@"username=%@&password=%@",[_txtUsername text],[_txtPassword text]]; 
       // Create the request object 
       NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url]; 
       [request setHTTPMethod: @"POST"]; 
       [request setHTTPBody: [postData dataUsingEncoding: NSUTF8StringEncoding]]; 

       // create the web view 
       UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; 
       //Change Frame 
       webView.frame = CGRectMake(webView.frame.origin.x, webView.frame.origin.y + 20, webView.frame.size.width, webView.frame.size.height); 

       //assign delegate to webview 

        webView.delegate = self. 

       // Load the request 
       [webView loadRequest: request]; 

       //show the webview 
       [self.view addSubview:webView]; 

//並實現以下的委託方法

- (void)webViewDidFinishLoad:(UIWebView *)webView{ 
    [webView removeFromSuperView]; 
} 

//如果你想關閉的WebView鏈接時單擊了,然後用下面的代碼

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ 

//Webview link press is hyperlink then it will called 
    if (navigationType == UIWebViewNavigationTypeLinkClicked){ 

     [webView removeFromSuperView]; 
    } 

    return YES; 

}

+0

謝謝,這是否完成加載時自動關閉webview?當超鏈接被推送時,我需要關閉它。我可以用這個做到這一點嗎? – Benswana

+0

是的,因爲「webViewDidFinishLoad」是一個委託方法,只要數據完成載入,就會自動調用。所以在這種方法中,我們從supper視圖中刪除了webview,所以它自動關閉。 –

+0

我不需要自動按下超鏈接時需要關閉它。感謝您的輸入tho :)。 – Benswana

相關問題