【问题标题】:UIWebView scrollView.contentSize.height not changedUIWebView scrollView.contentSize.height 没有改变
【发布时间】:2013-08-18 12:14:42
【问题描述】:

加载 htmlString 后,UIWebView 中 scrollView 的 contentSize 没有改变。在其他我的 viewControllers 中都很好,但现在它很神秘

我有

UIWebView *contentWebView;

我用某种方法做到了

- (void)makeContent
{
    ...
    contentWebView = [[UIWebView alloc] initWithFrame:CGRectMake(5, imageView.originY + imageView.height + 5, mainView.width - 10, 100)];
    contentWebView.delegate = self;
    contentWebView.scrollView.scrollEnabled = NO;
    contentWebView.contentMode = UIViewContentModeScaleAspectFit;
    NSLog(@"%@", factDict[@"text"]);
    [contentWebView loadHTMLString:factDict[@"text"] baseURL:nil];
    contentWebView.height = contentWebView.scrollView.contentSize.height;
    [mainView addSubview:contentWebView];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSLog(@"%f %f %f %f ", webView.height, webView.scrollView.contentSize.height, contentWebView.height, contentWebView.scrollView.contentSize.height);
    [webView sizeToFit];
    NSLog(@"%f %f %f %f ", webView.height, webView.scrollView.contentSize.height, contentWebView.height, contentWebView.scrollView.contentSize.height);
...
}

早在其他控制器contentWebView.height = contentWebView.scrollView.contentSize.height;帮帮我,但现在不行了

在日志中我有下一个

所以我不明白为什么 contentsize.height 没有改变

编辑

在我的另一个视图控制器中都很好

- (void)makeScrollView
{
    CGFloat width = [Utils widthOfMainViewForOrientation:self.interfaceOrientation];
    [mainView removeFromSuperview];
    mainView = [[UIView alloc] initWithFrame:CGRectMake((self.view.width - width) / 2, 15, width, 100)];
    mainView.backgroundColor = [UIColor whiteColor];
    if ([self.fullInfoDictionary[@"content"] length]) {
        contentWebView = [[UIWebView alloc] initWithFrame:CGRectMake(6, 4, mainView.width - 12, 100)];
        contentWebView.contentMode = UIViewContentModeScaleAspectFit; 
        contentWebView.delegate = self;
        HelperDf.htmlString = self.fullInfoDictionary[@"content"];
        [contentWebView loadHTMLString:self.fullInfoDictionary[@"content"] baseURL:nil];
        contentWebView.scrollView.scrollEnabled = NO;
        [mainView addSubview:contentWebView];
    }
    [self.scrollView addSubview:mainView];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    contentWebView.height = contentWebView.scrollView.contentSize.height;
    NSLog(@"%f %f %f %f", webView.height, webView.scrollView.contentSize.height, contentWebView.height, contentWebView.scrollView.contentSize.height);
    [self reloadFrames];
}

我还有下一个

我从这个控制器得到 htmlString

HelperDf.htmlString = self.fullInfoDictionary[@"content"];

并在我的第一个 UIWebVIew 中设置但结果 - 否。

你可以不管是否留下contentWebView.scrollView.scrollEnabled = NO; 我改成YES,但结果是一样的-在第二种情况下,第一次都很好-NO

【问题讨论】:

  • 看看我的答案吗??

标签: ios objective-c uiwebview


【解决方案1】:

你需要把NO改成YES你的contentWebView.scrollView.scrollEnabled,比如

 contentWebView.scrollView.scrollEnabled = YES;

已编辑

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    [webView sizeToFit];
    webView.scrollView.contentSize = CGSizeMake(320, contentWebView.scrollView.contentSize.height + 60);
} 

【讨论】:

  • 没用,在其他控制器中我将此属性设置为 NO,我没有像现在这样的问题
  • 我找到了答案,但你能解释一下吗? =) 我写在下面
  • 这不是答案,我把正确答案贴在下面了。
  • @TheisEgeberg - 你怎么能说你的答案是正确的?我的错了??你能解释一下吗?
  • 嗯,我试着重现他的错误,发现只有在视图没有添加到可见堆栈的情况下。
【解决方案2】:

问题是您的视图尚不可见。您要查找的值只有在添加到视图堆栈中的视图后才会可见。

在此过程中,在您检查值时,您的视图似乎并未添加到其中。

【讨论】:

  • 抱歉,我已经对其进行了编辑,使其更具可读性。我试图重现他的错误,它只发生在视图不在可见视图堆栈中时。由于他的问题并非在所有视图控制器中,我相当肯定这是问题所在。
  • listen contentWebView 是一个UIWebView 并且它被添加为mainView 的子视图,所以如果你说mainView 没有添加到任何超级视图中,那么Webview 将如何显示? ??????
  • 我已经改变了我的答案:) 它不是没有添加的 mainView,我相信它是滚动视图本身。或者 webview,在流程中的某个时刻,它还没有被添加。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-10-08
  • 2013-12-10
  • 2012-01-19
  • 2019-03-12
相关资源
最近更新 更多