2012-09-11 3 views
-2

웹보기에서 HTML 파일을 표시하고 있습니다. 사용자가 하이퍼 링크를 클릭하면 동일한 앱에서 다른보기로 이동하고 싶습니다. 어떻게하면됩니까? 이 작업을 수행??하이퍼 링크를 클릭하면 앱이 Xcode의 다른보기로 이동해야합니다.

"HREF ="새로운 뷰 컨트롤러 ""

의 URL 무엇입니까 "새로운 뷰 컨트롤러가"??

찾는 방법 ??

감사합니다.

+0

무엇을 사용해야할지 모르겠군요. :( –

답변

0

보기 컨트롤러에 사용할 주소가 없지만 이벤트를 추가하여 앵커 클릭을 캡처 할 수 있습니다.

HTML 파일 : 당신의하는 .m 파일에


<a href="#HELLO">Hello World</a> 
(엑스 코드) :

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

NSURL * URL = [request URL]; 

if ([URL rangeOfString:@"#HELLO"].location != NSNotFound) { 
// Do whatever you want here. 
} 

return YES; 
} 

가 shouldStartLoadWithRequest 때마다 활성화

은 예입니다 웹보기의 위치가 변경됩니다 ().앵커를 클릭하면 위치는 다음과 같습니다. file.html # HELLO

0

간단합니다. html을 만들면 어떤 링크가 보이는지 알아야합니다. 그렇다면 webview를로드하기 전에 링크를 확인하는 것이 간단합니다. 당신은 자신에 웹보기의 대리자를 설정 한 다음과 같이해야한다 : URL이 당신이 다음보기를 열 필요가있는 URL 인 경우, 위의 예에서

-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
NSString *urlString = [NSString stringWithFormat:@"%@", request.URL]; 
if([urlString isEqualToString:@"http://www.myCustomHyperLink"]) 
{ 
[self.navigationController pushViewController:myNextViewController]; 
return NO; 
} 
return YES; 
} 

을 탐색 컨트롤러는 다음 뷰 컨트롤러와 수익을 밀어 아니, 그래서 webview가 다시로드되지 않습니다. 그렇지 않으면 webview가 페이지를 다시로드합니다.

if 문을 필요에 맞게 변경할 수 있습니다.

나는 다음과 같은 응용 프로그램에서이를 사용

내가보기에 여러 연결되는 링크를 제공하고 있습니다. 링크가 내 자신의 링크라면, 두 번째보기 컨트롤러에서 엽니 다. 다른 방법으로는 Safari를 엽니 다. 응용 프로그램을 브라우저로 바꾸고 싶지 않기 때문입니다. 그래서 저는 다음과 같은 것을 가지고 있습니다 :

if([urlString rangeOfString:@"www.myDomain.com"].location == NSNotFound) 
{ 
[[UIApplication sharedApplication] openURL:request.Url]; 
} 
else 
...push the next view controller how I showed you above. 
관련 문제