xCode - 向 UIScrollView 添加滚动事件

xCode - add scroll event to UIScrollView

我编写了一个函数,当 UIScrollView 触及顶部或底部时应该执行某些操作。

    -(void)scrollViewDidScroll: (UIScrollView*)scrolling
{
    NSLog(@"Event triggered.");
    float scrollViewHeight = scrolling.frame.size.height;
    float scrollContentSizeHeight = scrolling.contentSize.height;
    float scrollOffset = scrolling.contentOffset.y;

        if (scrollOffset == 0)
        {
            _lol.text = @"top hit";
            NSLog(@"Top Hit");
        }
        else if (scrollOffset + scrollViewHeight == scrollContentSizeHeight)
        {
            _lol.text = @"bottom hit";
            NSLog(@"bottom Hit");
        }
    }

问题是:我不知道如何 link 这个函数到我的名为 "scrolling" 的 UIScrollView。

提前致谢。

假设您有一个名为 mScrollView1

的滚动视图

调用方法如下

 [self scrollViewDidScroll:mScrollView1];
                           ^^^^^^^^^^^^ here is your scrollview name

编辑 1

这是用来处理滚动视图的所有边缘情况的。您需要一个 ivar 来保持状态,如评论中所示,还有其他方法可以处理此问题。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    //[super scrollViewWillBeginDragging:scrollView];   // pull to refresh

    self.isScrolling = YES;
    NSLog(@"+scrollViewWillBeginDragging");
}

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
    //[super scrollViewDidEndDragging:scrollView willDecelerate:decelerate];    // pull to refresh

    if(!decelerate) {
        self.isScrolling = NO;
    }
    NSLog(@"%@scrollViewDidEndDragging", self.isScrolling ? @"" : @"-");
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    self.isScrolling = NO;
    NSLog(@"-scrollViewDidEndDecelerating");
}

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{   
    self.isScrolling = NO;
    NSLog(@"-scrollViewDidScrollToTop");
}

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
    self.isScrolling = NO;
    NSLog(@"-scrollViewDidEndScrollingAnimation");
}

现在使用适当的委托并调用您的方法。

不要忘记将委托添加到您的滚动视图。


编辑 2

要为 scrollview 添加委托,请写在下面行

myScrollview.delegate = self;

- (void)scrollViewDidScroll:(UIScrollView *)scrollViewUIScrollViewDelegate 的方法。它将被自动调用。
为此,您必须将 UIScrollView 的委托设置为当前 ViewController。在您的 (void)viewDidLoad 中设置:
self.myScrollView.delegate = self.
在 .h 上,您的视图控制器必须实现协议 <UIScrollViewDelegate>: @interface MyViewController : UIViewController <UIScrollViewDelegate>.
现在在 .m 中包含方法 -(void)scrollViewDidScroll: (UIScrollView*)scrolling 并进行实现。