如何在UIScrollView中实现scrollViewDidScroll
我有一个问题,当我在UIScrollView
子类中调用scrollViewDidScroll
方法时,没有任何反应。 这是我的代码:
AppDelegate.m
#import "ScrollView.h" - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. CGRect screenRect = [[self window] bounds]; ScrollView *scrollView = [[ScrollView alloc] initWithFrame:screenRect]; [[self window] addSubview:scrollView]; [scrollView setContentSize:screenRect.size]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; }
ScrollView.m
#import "AppDelegate.h" #import "ScrollView.h" - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code NSString *imageString = [NSString stringWithFormat:@"image"]; UIImage *image = [UIImage imageNamed:imageString]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; [super addSubview:imageView]; } return self; } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { NSLog(@"%f", scrollView.contentOffset.y); }
在
- (id)initWithFrame:(CGRect)frame
加
self.delegate = self;
或者在AppDelegate.m中,在scrollview inited之后,添加此代码
scrollview.delegate = self;
当然,您必须实现委托方法
scrollViewDidScroll:
并且不要忘记在AppDelegate.h中添加以下代码
@interface AppDelegate : UIResponder
第1步:为UIViewController类创建委托:
@interface ViewController : UIViewController
第2步:然后为您的UIScrollView
对象添加Delegate:
scrollview.delegate = self;
第3步:实现Delegate方法如下:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView { // Do your stuff here... // You can also track the direction of UIScrollView here.... // to check the y position use scrollView.contentOffset.y }
干得好。 在上述3个步骤的帮助下,您可以将ScrollViewDidScroll
方法集成到我们的Objective-C
类中。
对于iOS10,SWift 3.0在UIScrollView上实现scrollViewDidScroll
class ViewController: UIViewController, UIScrollViewDelegate{ //In viewDidLoad Set delegate method to self. @IBOutlet var mainScrollView: UIScrollView! override func viewDidLoad() { super.viewDidLoad() self.mainScrollView.delegate = self } //And finally you implement the methods you want your class to get. func scrollViewDidScroll(_ scrollView: UIScrollView!) { // This will be called every time the user scrolls the scroll view with their finger // so each time this is called, contentOffset should be different. print(self.mainScrollView.contentOffset.y) //Additional workaround here. } }