Kev*_*ier 7 iphone subclass uiscrollview
早上好,
我创建了一个UIScrollView的子类,我现在想知道用户何时在我的子类中滚动.为此,我实现了如下:
ImageScroller.h
@interface UIImageScroller : UIScrollView <UIScrollViewDelegate> {
Run Code Online (Sandbox Code Playgroud)
ImageScroller.m(在@implementation中)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"did scroll");
}
Run Code Online (Sandbox Code Playgroud)
问题是,方法scrollViewDidScroll似乎没有被触发.有没有可能让它工作?
我也尝试将委托设置为自己,但它不起作用.
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
self.directionalLockEnabled = YES;
[self setDelegate:self];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
我将ScrollView添加到我的XIB-File并将Class设置为我的ImageScroller.我还设置了Fileowner,我在ViewController的.h-File中使用了UIScrollViewDelegate,并在.m文件中实现了方法scrollViewDidScroll.
当我在XIB的.m文件的代码中设置我的ImageScroller的委托时,如[imageScroller setDelegate:imageScroller],在我的ImageScroller-Subclass中触发了scrollViewDidScroll,但我的ViewController中的那个没有被触发,但我需要两者.
有什么解决方案吗?
感谢您提前的答案.
小智 13
我遇到了同样的问题,创建了UIScrollView的子类,但解决了这个问题.如上所述,您可以将自己(子类实例)设置为委托,但这就是我所做的.
在子类中,我覆盖了以下方法
//Override this to detect when the user is scrolling, this is also triggered during view
//layout. Here you can check your deceleration rate and determine when the scrolling has
//grinded to a halt.
-(void)setContentOffset:(CGPoint)contentOffset
//Override this to detect when the view has been resized (just a handy override)
-(void)setFrame:(CGRect)frame;
Run Code Online (Sandbox Code Playgroud)
至于其他UIScrollViewDelegate方法,View Controller应负责处理我认为的那些方法.