UIScrollView的委托方法未触发

时间:2015-02-06 19:30:38

标签: ios delegates uiscrollviewdelegate

我无法在我的自定义类中触发viewDidScroll方法...我知道,我知道这已经在多个stackoverflow帖子中...我已经阅读了几十个...请帮忙!

遵循其他S.O.的指示帖子,

我已在我的.h文件中添加了协议:

@interface ISCByStyleView : UIViewController <UIScrollViewDelegate>

我已在此自定义类的.h文件中声明了“delegate”属性:

@property (nonatomic, strong) id delegate;

我在.m文件中引用了这样的委托:

self.delegate=self;

但是当我滚动滚动视图时,方法viewDidSCroll将不会触发。

这是.h文件:

#import <UIKit/UIKit.h>
#import "FMDatabase.h"
#import "FMResultSet.h"
#import "ISCAppDelegate.h"

@interface ISCByStyleView : UIViewController <UIScrollViewDelegate>

@property (nonatomic, strong) id delegate;

@property (weak, nonatomic) IBOutlet UIView *iboStylesView;

@end

以下是.m

的重要部分
#import "ISCByStyleView.h"
#import "ISCTableView.h"

@interface ISCByStyleView ()

@property NSNumber *selectedStyle;
@property NSNumber *selectedQuery;
@property NSTimer *ssTimer;

@end

@implementation ISCByStyleView

- (void)viewDidLoad {
    [super viewDidLoad];

    self.delegate=self;

...

- (void) resetTimer {
    [self.ssTimer invalidate];
    self.ssTimer = [NSTimer scheduledTimerWithTimeInterval:30 target:self  selector:@selector(launchScreenSaver) userInfo:Nil repeats:NO];
NSLog (@"Timer Reset");
}

//Reset with Scrolling
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog (@"ByStyleView: scrollDidScroll event");
    [self resetTimer];

}

1 个答案:

答案 0 :(得分:1)

ISCByStyleViewUIViewController,因此您不想设置自己的委托。相反,您需要将UIScrollView的委托设置为self,例如:

self.scrollview.delegate = self;

使用此行宣布delegate .h属性:@property (nonatomic, strong) id delegate;是不必要的。

编辑:您也可以完全在Interface Builder中设置UIScrollView的委托,如果您创建它的话就是这样:

第1步:

enter image description here

第2步:

enter image description here