我找到了一些可以完全解决我的问题的答案,但似乎我遗漏了一些步骤。我只是想拦截 ScrollView 的“ViewDidBlablabla”事件,所以我创建了一个自定义 UIScrollView 类。
MyScrollView.m
#import "MyScrollView.h"
@implementation MyScrollView
- (id)initWithFrameCGRect)frame{
NSLog(@"initWithFrame");
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
-(void)scrollViewWillBeginDraggingUIScrollView*)scrollView{
NSLog(@"scrollViewWillBeginDragging");
//scrollView.contentOffset
}
-(void)scrollViewDidScrollUIScrollView*)scrollView{
NSLog(@"scrollViewDidScroll");
}
-(void)scrollViewDidEndScrollingAnimationUIScrollView *)scrollView{
NSLog(@"scrollViewDidEndScrollingAnimation");
}
@end
MyScrollView.h
#import <UIKit/UIKit.h>
@interface MyScrollView : UIScrollView <UIScrollViewDelegate>
@end
当我分配我的自定义 ScrollView 时,我确实收到了控制台消息“initWithFrame”,但无法访问其他事件。我错过了什么?
如果您需要其他一些代码,请随时询问,但由于我使用了自定义的“initWithFrame”方法,我想错误应该在这里。
Best Answer-推荐答案 strong>
尝试将您的 View 设置为自身的委托(delegate):
if (self) {
// Initialization code
self.delegate = self;
}
从技术上讲,您不需要继承 UIScrollView 来响应滚动事件:将 delegate 设置为 < 的实现就足够了 。
另外,the scrollViewDidEndScrollingAnimation: method has been gone for about two years ,因此不会在现代 iOS 安装中调用它。
关于Objective-C - ScrollView 事件,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/10399952/
|