检测UIScrollView的子类中的滚动

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应负责处理我认为的那些方法.


Mic*_*eft 4

我想你可以尝试设置 self.delegate = self; 接收事件。