How to implement scrollViewDidScroll in UIScrollView

I have a problem when nothing happens when I call the scrollViewDidScroll method in my subclass of UIScrollView . Here is my code:

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); } 
+4
source share
3 answers

in

 - (id)initWithFrame:(CGRect)frame 

add

 self.delegate = self; 

or in AppDelegate.m, after adding scroll, add this code

 scrollview.delegate = self; 

of course you must implement the delegate method

 scrollViewDidScroll: 

and don't forget to add below code in AppDelegate.h

 @interface AppDelegate : UIResponder <UIApplicationDelegate,UIScrollViewDelegate> 
+2
source

For iOS10, SWift 3.0 implements scrollViewDidScroll in UIScrollView

 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. } } 
+2
source

Step 1: Create a delegate for the UIViewController class:

  @interface ViewController : UIViewController <UIScrollViewDelegate> 

Step 2: add a delegate for your UIScrollView object:

  scrollview.delegate = self; 

Step 3: implements the delegation methods as follows:

  - (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 } 

Here you go. Using the above three steps, you can integrate the ScrollViewDidScroll method into our Objective-C class.

+2
source

All Articles