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