13

我正在尝试实现一种条款和条件页面的形式,其中“继续”按钮仅在用户滚动到 UITextView 底部时才启用。到目前为止,我已将我的类设置为 UIScrollView 委托并实现了以下方法:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    NSLog(@"Checking if at bottom of UITextView");
    CGPoint bottomOffset = CGPointMake(0,self.warningTextView.frame.size.height);
    //if ([[self.warningTextView contentOffset] isEqualTO:bottomOffset])
    {
    }    
}

我已经评论了 if 语句,因为我不确定如何检查 UITextView 是否位于底部。

4

3 回答 3

21

UITextView 是 UIScrollView 的子类。因此,您使用的 UIScrollView 委托方法在使用 UITextView 时也可用。

而不是使用scrollViewDidEndDecelerating,您应该使用scrollViewDidScroll,因为滚动视图可能会停止滚动而不会减速。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height)
    {
        NSLog(@"at bottom");
    }
}
于 2012-12-20T10:30:58.263 回答
7

这个问题的 Swift 版本:

func scrollViewDidScroll(_ scrollView: UIScrollView) {

    if scrollView.contentOffset.y >= scrollView.contentSize.height - scrollView.frame.size.height {

        print( "View scrolled to the bottom" )

    }
}
于 2017-02-09T04:07:13.157 回答
0

这应该解决它。有用。我正在使用它。

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView 
{
    float bottomEdge = scrollView.contentOffset.y + scrollView.frame.size.height;
    if (bottomEdge >= scrollView.contentSize.height) 
    {
        // we are at the end
    }
}
于 2012-12-20T10:31:13.167 回答