2013-05-27 3 views
0

저는 몇 시간 동안이 문제에 봉착했습니다. 동적으로 UIWebView 그것의 콘텐츠 크기를 기반으로 크기를 조정하려고 해요. 내 문제는 모든 아이폰 5에서 내 애플 리케이션을 실행할 때 잘 작동하지만 아이폰 4 (및 시뮬레이터 - 3.5 인치) 동일한 동작을 얻지 않는다는 것입니다. 아이폰 4에 내 코드의 버전으로UIWebView 콘텐츠 크기가 항상 동일한 값을 반환합니다.

- (void)webViewDidFinishLoad:(UIWebView *)webview { 

    CGFloat height = webview.scrollView.contentSize.height; 
    _descriptionHeight = height; 
    self.webView.scrollView.scrollEnabled = NO; 
    self.webView.scrollView.bounces = NO; 
} 

height에 상관없이 내용이 무엇인지, 항상 0이 없습니다.

[[webview stringByEvaluatingJavaScriptFromString:@"document.height"] floatValue] 

을 사용하여 JS로 계산해 보았습니다.

두 가지 방법 모두 iPhone 5에서 제대로 작동하지만 문제는 4 (둘 다 iOS6 실행)에서만 발생합니다.

아이디어가 있으십니까?

편집 : 문제를 재현 할 수있는 방법을 찾았습니다. 하나의 섹션, 8 개의 정적 셀이있는 테이블보기가 있습니다. 내 webview는 4 번째 셀 안에 있습니다 (맨 위부터 시작, row = 3). 내 셀을 첫 번째 위치 (행 = 0)로 이동하면 모든 것이 정상적으로 작동합니다. 4 번째 자리로 옮기면 문제를 재현 할 수 있습니다. 너희들은 어떻게 생각하니? UITableView의 버그?

+0

저는 iPhone 4 (iOS6)와 시뮬레이터 (iOS5 & iOS6)에서 코드를 시험해 보았고 정상적으로 작동합니다. 내가 가지고있는 문제를 재현 할 수 없습니다. 이 문제는'webViewDidFinishLoad :'가 아니라'UIWebView'를 설정하는 방법과 관련이 있습니다. 미안 나는 그것보다 더 많은 도움을 기울이지 않는다. –

+0

@StephSharp 시험해 주셔서 감사합니다. 내 webView는 스토리 보드에 설정되어 있으므로 해당 화면을 다시 실행 해 보겠습니다. –

답변

0

찾았습니다. 내 화면을보고 나서, 나는 iPhone 5에서 그 화면이 더 작기 때문에 화면이로드 될 때 UIWebView을 포함하는 셀이 표시되었다는 것을 알게되었다. 세포.

아이폰 4에서는 처음에는 웹보기가 보이지 않았기 때문에 재미있는 결과를 얻었습니다.

나는

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 

webView loadHTMLString: 선택을 이동 결국 모든 것이 지금 잘 작동합니다.

그래서 문제를 해결할 수 있었지만 누군가 UITableView에서 현재 볼 수없는 UIWebView의 콘텐츠 크기를 얻을 수없는 이유를 설명 할 수 있다면 많은 도움이 될 것입니다.

+0

'UITableView'는 보이는 셀만로드합니다. 다른 셀은 스크롤 할 때로드되고 표시됩니다. 따라서 UIWebView가 화면에없는 셀에 있으면 아직로드되지 않았으므로 높이가 0입니다. [Apple 's doco for UITableView] (http://developer.apple.com/library/) 'cellForRowAtIndexPath :'는 "테이블의 셀을 나타내는 객체 또는 if가없는 경우 if if/if/if/if/document/uikit/reference/UITableView_Class/Reference/Reference.html # // apple_ref/doc/uid/TP40006943-CH3-SW16) 셀이 보이지 않거나 indexPath가 범위를 벗어났습니다. " –

+0

@StephSharp 감사합니다. 보이는 셀을로드하는'UITableView'에 대해서 알고 있었지만, 어떻게'webViewDidFinishLoad'가 여전히 호출되고 있었습니까? –

관련 문제