这个问题的答案可能就在我的眼皮底下,但我没有看到。也许这里有人可以提供帮助。
我有一个允许垂直滚动的scrollView。我设置它:
[clefScrollView addSubview:clefView];
[clefScrollView setContentSize:CGSizeMake(clefView.frame.size.width, clefView.frame.size.height)];
clefScrollView.showsVerticalScrollIndicator = YES;
clefScrollView.showsHorizontalScrollIndicator = NO;
clefScrollView.delegate = self;
为了支持 UIScrollViewDelegate 协议,我在同一个文件中包含以下方法:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
NSLog(@"%f %f", scrollView.contentOffset.y, scrollView.contentSize.height);
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidEndDecelerating");
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidEndScrollingAnimation");
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
NSLog(@"scrollViewDidScroll");
}
此外,我的班级的 .h 文件包括协议:
@interface ClefNotesViewController : UIViewController <UIActionSheetDelegate,UIScrollViewDelegate,DoneWithVCDelegate> {
问题是无论如何,以下两个永远不会被调用:
-scrollViewDidEndDecelerating
-scrollViewDidScroll
其他两种方法确实被调用以响应不同的事件。鉴于两个协议方法被调用,我假设我已经正确地将委托设置为我自己。那么,问题是什么?
谢谢!
更新:我发现了问题,虽然还没有弄清楚如何解决它。我的课程跨越两个文件。在第二个文件中,一个不同的滚动视图正在实现 -scrollViewDidEndDecelerating -scrollViewDidScroll
问题是,如何在同一个类中为两个不同的 UIScrollView 定义两组不同的方法?
我可以尝试使用相同的委托方法处理两个滚动视图,但这很难看,因为我无法将每组委托与滚动视图的文件一起保存。我也可以分班。还有其他方法吗?