UIScrollView 的委托方法未触发
UIScrollView's delegate methods not firing
我无法让 viewDidScroll 方法在我的自定义中触发 class...我知道,我知道这已经出现在多个 Whosebug 帖子中...我已经阅读了数十篇...请帮忙!
遵循其他 S.O 的指示。帖子,
我已经在我的 .h 文件中添加了协议:
@interface ISCByStyleView : UIViewController <UIScrollViewDelegate>
我已经在这个自定义的 .h 文件中声明了一个 "delegate" 属性 class:
@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];
}
ISCByStyleView
是 UIViewController
,因此您不想设置自己的委托。相反,您需要将 UIScrollView
的委托设置为自己,例如:
self.scrollview.delegate = self;
并在 .h
中使用此行声明 delegate
属性:@property (nonatomic, strong) id delegate;
是不必要的。
编辑:您也可以完全在 Interface Builder 中设置 UIScrollView
的委托,如果您是在此处创建它的话:
第 1 步:
步骤 #2:
我无法让 viewDidScroll 方法在我的自定义中触发 class...我知道,我知道这已经出现在多个 Whosebug 帖子中...我已经阅读了数十篇...请帮忙!
遵循其他 S.O 的指示。帖子,
我已经在我的 .h 文件中添加了协议:
@interface ISCByStyleView : UIViewController <UIScrollViewDelegate>
我已经在这个自定义的 .h 文件中声明了一个 "delegate" 属性 class:
@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];
}
ISCByStyleView
是 UIViewController
,因此您不想设置自己的委托。相反,您需要将 UIScrollView
的委托设置为自己,例如:
self.scrollview.delegate = self;
并在 .h
中使用此行声明 delegate
属性:@property (nonatomic, strong) id delegate;
是不必要的。
编辑:您也可以完全在 Interface Builder 中设置 UIScrollView
的委托,如果您是在此处创建它的话:
第 1 步:
步骤 #2: