UIScrollView中的UIWebView:滚动工作但查看不调整大小

时间:2014-07-28 12:56:04

标签: ios objective-c uiwebview uiscrollview

我是iOS编程的新手,我试图在故事板中有一个视图,顶部有一个UIImageView,下面有一个uiWebView。我设置了包含它们的UIScrollView,我希望滚动使图像在下降时消失。

我按照这个答案(link)并且滚动工作但UIWebView没有正确调整大小。我已经尝试了很多解决方案,但是如果我调整Web视图大小,我就不再使用滚动工具了,反之亦然。

特别是,我正在使用:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    _textDetailNews.delegate = self; // the web view delegate
    _textDetailNews.scrollView.scrollEnabled = NO;
    [_textDetailNews loadHTMLString:description baseURL:nil]; // set text to be shown in web view
}

- (void)webViewDidFinishLoad:(UIWebView *)webview 
{
   CGFloat height = [[_textDetailNews stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];

   [_scrollView setContentSize: CGSizeMake(_scrollView.frame.size.width, height + _scrollView.frame.size.height)];

   CGRect oldBounds = [[self textDetailNews] frame];
   [_textDetailNews setFrame:CGRectMake(oldBounds.origin.x, oldBounds.origin.y, oldBounds.size.width, height)];
}

_scrollView已在故事板中包含UIImageViewUIWebView的位置。

拜托,感谢任何有助于滚动和UIWebView身高调整工作的帮助。

修改

我想让它更清楚。 UIScrollView可以正常使用上述代码,但UIWebView不会更改其框架。如果我不在setContentSize上致电:_srollView UIWebView更改尺寸,但视图不再滚动。

有人能告诉我问题在哪里吗?

4 个答案:

答案 0 :(得分:1)

您必须委派“UIScrollViewDelegate”协议。在.m文件中,您必须实现以下方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale

例如:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
    return nil;
    return scrollView.subviews.firstObject;
}

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
{

}

答案 1 :(得分:0)

因为你告诉你尝试了许多排列。所以我给你一个方法不是一个真正的答案

我已经使用过那种应用程序,而且我遇到的问题就像你说的那样,所以我使用UITableView代替UIScrollView并将UIWebView添加为单独的UITableViewCell }。

希望这会有所帮助。

答案 2 :(得分:0)

如果您在UIScrollView中嵌入UIWebView,那么您可能会遇到类引用中发布的警告: https://developer.apple.com/library/ios/documentation/Uikit/reference/UIWebView_Class/index.html

  

重要   您不应该在UIS​​crollView对象中嵌入UIWebView或UITableView对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆和错误处理。

如果您只需要在UIWebView的顶部包含图像,是否可以将图像嵌入到HTML中?

类似于:Using HTML and Local Images Within UIWebView

答案 3 :(得分:0)

很长一段时间我都遇到了这个问题。 我也使用了你使用过的相同链接,将一个UIview和webview放在scrollview中,但它仍然没有正常工作.webview的内容是错误的。 我通过将webview置于另一个uiview 然后在uiscroll视图中解决,而不是直接在scrollview中。 希望有所帮助。