2011-11-07 4 views
1

내 앱에는 UIWebView 기반의 뷰 컨트롤러가있어 앱 자체에 대한 정보와 크레딧을 보여줍니다. 정보의 일부로 mainBundle의 infoDictionary에서 검색된대로 앱 버전이 표시됩니다. 따라서이 문자열은 원본 HTML에 없습니다. 자리 표시자를 대체하여 프로그래밍 방식으로 설정됩니다.UIWebView를 사용하여 정보 페이지를 구현할 때의 문제

따라서 순서는 다음 1) I는 HTML loadHTMLString:baseURL:

메소드 호출하여 I 실제 버전 3) I가있는 UIWebView에서 얻어진 문자열을 표시하여 자리를 대체)이있는 NSString 2에 HTML로드 또한 인터넷의 일부 웹 페이지에 대한 하이퍼 링크가 있습니다. 모든 것이 정상이지만이 문제의 원인은 다음과 같습니다. 하이퍼 링크를 터치하여 해당 웹 페이지로 이동하면 원래 정보 페이지로 돌아갈 수 없습니다. canGoBack은 NO를 반환하고 goBack은 아무 것도하지 않습니다.

의견이 있으십니까? 미리 감사드립니다.

답변

2

결국, 나는 공유하고 싶은 만족스러운 해결책을 발견했습니다. ,

<p>App version: 
<script type="text/javascript"> 
    var args = document.location.search.substring(1).split("&"); 
    for (var i in args) { 
     var nameValue = args[i].split("="); 
     if (nameValue[0] == "version") 
      var version = nameValue[1]; 
    } 
    if (version) 
     document.write(version); 
</script> 
</p> 

코드의이 작품은 URL의 쿼리 부분을 구문 분석 :

1) 나는 응용 프로그램 버전을 표시하려면 다음 코드를 삽입하여, 내 정보 페이지의 HTML 코드를 변경 "version = <version>"인수를 찾고 해당 값을 사용하여 앱 버전을 표시하십시오.

있는 UIWebView에서 사용되는 URL을 준비 할 때, 내가 메인 번들에서 응용 프로그램 버전 검색) 2 :

NSString* urlString = [NSString stringWithFormat:@"<my_info_page>.html?version=%@", version]; 
:

NSString* version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"]; 

가 그럼 난 내 URL 문자열의 끝에 그것을 추가를 , mWebView가 함께 IBOutlet입니다

NSURL* url = [[NSURL alloc] initWithString:urlString]; 
NSURLRequest* request [[NSURLRequest alloc] initWithUrl:url]; 
[mWebView loadRequest:urlRequest]; 
[urlRequest release]; 
[url release]; 

:

3) 마지막으로, 나는 페이지를 표시 할 수있는 UIWebView를 사용 형식의 UIWebView, 제대로 XIB 파일의 웹보기에 연결되어 있습니다.

하이퍼 링크를 따라갈 때 웹보기의 앞/뒤로 기능을 포함하여 내 iPhone 4에서 제대로 작동하지만 사용자를 앱 안에 유지합니다.

1

내가 응용 프로그램의 탈옥이 경우 Safari를로드합니다 :

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

    [[UIApplication sharedApplication] openURL:request.URL]; 
    return NO; 

} 

유일한 단점은 사용자가 앱에서 나오는 것입니다. 당신은 경고 방법을 처음 경고 할 수 있습니다.

또는 자신 만의 뒤로 버튼을 코딩해야합니다.

+0

정확히 내가 원하는 것은 아니지만 흥미로운 제안입니다. 투표하기. –

관련 문제