iOS如何检查是否转到webView的底部

时间:2014-08-27 07:40:26

标签: ios webview

有没有可以通知晚餐视图的事件?

我尝试使用scrollViewDidScroll。但它没有被召唤。

-(void)scrollViewDidScroll: (UIScrollView*)scrollView
{
    NSLog(@"At the bottom...");
}

4 个答案:

答案 0 :(得分:1)

如果你有一个webView实例,你可以通过这样做获得其scrollView的引用, webView.scrollView。将其委托设置为self,如下所示:

webView.scrollView.delegate = self;

现在,请确保您已在班级中实施UIScrollViewDelegate,其中您拥有webView的实例。在下面的代码中实现,告诉您是否已到达底部。

 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
        float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height;
        if (bottomEdge >= scrollView.contentSize.height) {
            //This means that you have reached the end.
        }
    }

答案 1 :(得分:1)

您必须先将webview中的scrollview委托设置为self。因此,滚动webview时可以调用scrollViewDidScroll:。所以,试试这个:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.webview.scrollview.delegate = self;
}

- (void)scrollViewDidScroll:(UIScrollView*)scrollview
{
    CGPoint offset = scrollView.contentOffset;

    CGRect bounds = scrollView.bounds;

    UIEdgeInsets inset = scrollView.contentInset;

    CGFloat currentOffset = offset.y + bounds.size.height - inset.bottom;

    if (currentOffset - scrollView.contentSize.height <= 0)
    {
        NSLog(@"At the bottom...");
    }
}

答案 2 :(得分:0)

要在scrollView委托方法中获取调用,您需要为webview滚动视图分配委托,如下所示:

webview.scrollView.delegate = self;

同样在.h文件中符合UIScrollViewDelegate,如下所示:

@interface MyController : UIViewController <UIScrollViewDelegate>


@end

答案 3 :(得分:0)

如果有人对如何在Swift 4中完成此操作感兴趣,请点击这里:

  1. 设置网络视图&#39; scrollView委托给viewDidLoad()self.webView.scrollView.delegate = self

  2. 中的self
  3. 从UIScrollViewDelegate

  4. 扩展您的课程
  5. 实现方法scrollViewDidScroll(),它将处理滚动事件 (此特定实现用于检查用户是否已滚动到webview内容的底部)

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
      let bottom = scrollView.contentOffset.y + scrollView.frame.size.height
      if (bottom >= scrollView.contentSize.height) {
        // Do something here
      }
    }