【问题标题】:Programmatically scroll a UIWebView on iOS以编程方式在 iOS 上滚动 UIWebView
【发布时间】:2011-03-24 10:09:44
【问题描述】:

如何在 Objective-C (iOS) 中以编程方式滚动 UIWebView?

我能想到的唯一解决方案是将它放在 UIScrollView 中并以编程方式滚动它,但是这会带来一个问题,即 Web 视图的大小通常是错误的,因此在滚动时页面底部会被切断。我也不知道如何以编程方式更改 Web 视图的大小以适应其内容......到目前为止我有:

UIView *webDocView = webView.subviews.lastObject;
webView.frame = CGRectMake(webView.frame.origin.x, webView.frame.origin.y, webView.frame.size.width, webDocView.frame.size.height);

但由于某种原因,这行不通。

我应该坚持使用 ScrollView 的解决方案...还是有更好的方法来做到这一点?

【问题讨论】:

  • 它不是重复的......另一个问题是关于在没有动画的情况下使用java滚动......我在这里尝试做的是让页面滚动就像用户用他们的移动它一样手指(即动画移动)

标签: ios objective-c scroll uiscrollview uiwebview


【解决方案1】:

UIWebView 没有任何属性来指定其在正在呈现的文档上的位置。您可能需要通过 Javascript 执行此操作,如果您想要它的动画感觉,请查看此。 http://www.learningjquery.com/2007/09/animated-scrolling-with-jquery-12

【讨论】:

  • 非常感谢您提供的信息...所以我想我会将您发送给我的页面中的 Java 脚本替换为:NSString yourScript = [NSString stringWithFormat:@"javascript_method( );"]; NSString responseJS = [webView stringByEvaluatingJavaScriptFromString:yourScript]; ? (来自“重复”帖子页面)谢谢:)
【解决方案2】:

Apple 说:“您不应该在 UIScrollView 对象中嵌入 UIWebView 对象。如果这样做,可能会导致意外行为,因为这两个对象的触摸事件可能会混淆并错误处理。”这可能与 UIWebView 和 UIScrollView 都是可滚动的实例以及两个滚动请求的交互过多有关。

【讨论】:

    【解决方案3】:

    这是一个我测试过的简单解决方案,它可以工作:

    在 viewDidLoad 中添加以下内容以在我们的 webView 之上添加一个滚动视图:

        self.scrollView = [[UIScrollView alloc] init];
    self.scrollView.delegate = self;
    [self.webView addSubview:self.scrollView];
    

    页面加载时,我们调整scrollView的frame和contentSize

    -(void) webViewDidFinishLoad:(UIWebView *)webView {
    self.scrollView.frame = webView.bounds;
    self.scrollView.contentSize = webView.scrollView.contentSize;
    }
    

    现在您可以通过将 self.webView.scrollView.contentOffset 设置为您想要的任何 CGPoint 以编程方式更改 web view.scrollView 的偏移量。

    请记住,通过这样做,触摸事件不再传递给 webiview。如果您希望 web 视图仍然响应用户拖动,那么也可以这样做:

    #pragma mark UIScrollView Delegate
    -(void) scrollViewDidScroll:(UIScrollView *)scrollView {
    self.webView.scrollView.contentOffset = scrollView.contentOffset;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-16
      相关资源
      最近更新 更多