xCode - 将滚动事件添加到UIScrollView

时间:2015-02-24 11:00:12

标签: objective-c xcode function triggers 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");
        }
    }

问题是:我不知道如何将此功能链接到名为"滚动"的UIScrollView。

提前致谢。

2 个答案:

答案 0 :(得分:3)

我们假设你有一个名为mScrollView1

的滚动视图

要拨打电话,请按以下方式使用

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

编辑1

这是用于处理scrollview的所有边缘情况的内容。你需要一个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;

答案 1 :(得分:0)

- (void)scrollViewDidScroll:(UIScrollView *)scrollView UIScrollViewDelegate 的方法。它将被称为automaticaly。
为此,您必须将UIScrollView的委托设置为当前的ViewController。在(void)viewDidLoad中设置此项:
self.myScrollView.delegate = self
在.h上,您的View Controller必须实现协议&lt; UIScrollViewDelegate &gt;: @interface MyViewController : UIViewController <UIScrollViewDelegate>
现在在.m上包含方法-(void)scrollViewDidScroll: (UIScrollView*)scrolling并进行实现。