调整嵌入在scrollview中的webview的大小

时间:2013-08-22 18:09:01

标签: ios sqlite uiwebview uiscrollview

我有一个包含歌曲的HTML字符串的sqlite数据库。

的ViewController
在这个视图控制器中,我有一个文本和一个按钮,用户在其中输入歌曲编号和一个按钮来发送搜索数据库的请求。

SongDisplay
在这个视图控制器中,我有一个Web视图和一个标签都嵌入在滚动视图中。我的网络视图已禁用滚动。

歌词显示,滚动视图正确调整大小。但是,Web视图不会调整大小,只显示一些歌词。我知道这是因为我将滚动视图和Web视图视为不同的颜色。

滚动视图顶部 https://www.dropbox.com/s/8hgpi8nlwnca0v8/iOS%20Simulator%20Screen%20shot%20Aug%2022%2C%202013%2C%202.04.24%20PM.png

问题示例,滚动视图底部 https://www.dropbox.com/s/r8l8d82an613hec/iOS%20Simulator%20Screen%20shot%20Aug%2022%2C%202013%2C%201.57.14%20PM.png

这是我的代码:

- (void)webViewDidFinishLoad:(UIWebView *)aWebView
{
    CGRect frame = aWebView.frame;
    frame.size.height = 1;
    aWebView.frame = frame;

    CGSize fittingSize = [aWebView sizeThatFits:CGSizeZero];

    frame.size = fittingSize;

    [self.scroll setContentSize:fittingSize]; //scroll is the name of the scroll view

    aWebView.frame = frame;

    NSLog(@"size: %f" ,fittingSize.height);
}

如何同时获取网页视图和滚动视图以调整大小?

3 个答案:

答案 0 :(得分:0)

我通过在detailView中加载viewWillAppear内的内容来解决这个问题 像这样

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    [self configureView];//<-- here i am call loadHTMLString
}

- (void)configureView
{

    // disabling scroll for webview
    if ([self.detailWebView respondsToSelector:@selector(scrollView)]) {
        self.detailWebView.scrollView.scrollEnabled = NO; // available starting in iOS 5
    } else {
        for (id subview in self.detailWebView.subviews)
            if ([[subview class] isSubclassOfClass: [UIScrollView class]])
                ((UIScrollView *)subview).scrollEnabled = NO;
    }

    // setting content
    if (self.detailItem) {
        self.detailTitle.text = self.detailItem->title;
        //image scaling styles
        NSString *style=@"<style type=\"text/css\">\n"
        "img { \n"
        "   display: block;"
        "   float:none;"
        "   margin:0 auto;"
        "   max-width:100%;"
        "   height:auto;"
        "} \n"
        "</style>\n";

        [self.detailWebView loadHTMLString:[style stringByAppendingString:self.detailItem->content] baseURL:nil];
    }
}

答案 1 :(得分:0)

当OS X Mavericks正式发布时,问题就出现了问题。之前的问题可能是测试版中的错误造成的。

答案 2 :(得分:0)

根据Apple的建议,不应该在滚动视图中嵌入webview

  

重要

     

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

价: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIWebView_Class/