You can create a paging scroll view by setting the pagingEnabled property to true. In addition to that the scroll view can be positioned to a specific page in case there is paging or to a given origin using the contentOffset property or the setContentOffset method. It has a bunch of delegate methods to notify us about the state of the view such as
- scrollViewDidScroll
- Gets called when the contents of the scroll view get scrolled.
- scrollViewDidEndDecelerating
- Gets called when the contents stop scrolling.
- scrollViewWillEndDragging
- Gets called when the dragging is finished. Dragging not same as scrolling basically the user moves the finger from one to location to another without giving any momentum to the move.
Interface file for the view controller - MyScrollViewController.h
#import <UIKit/UIKit.h> @interface UITextFieldViewController : UIViewController <UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView *myScrollView; @end
Implementation file for the view controller - MyScrollViewController.m
#import "UITextFieldViewController.h" @interface UITextFieldViewController () @end @implementation UITextFieldViewController @synthesize myScrollView; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //set the background to white color self.view.backgroundColor = [UIColor whiteColor]; //initialize and allocate your scroll view self.myScrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)]; //set the paging to yes self.myScrollView.pagingEnabled = YES; //lets create 10 views NSInteger numberOfViews = 10; for (int i = 0; i < numberOfViews; i++) { //set the origin of the sub view CGFloat myOrigin = i * self.view.frame.size.width; //create the sub view and allocate memory UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(myOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)]; //set the background to white color myView.backgroundColor = [UIColor whiteColor]; //create a label and add to the sub view CGRect myFrame = CGRectMake(10.0f, 10.0f, 200.0f, 25.0f); UILabel *myLabel = [[UILabel alloc] initWithFrame:myFrame]; myLabel.text = [NSString stringWithFormat:@"This is page number %d", i]; myLabel.font = [UIFont boldSystemFontOfSize:16.0f]; myLabel.textAlignment = NSTextAlignmentLeft; [myView addSubview:myLabel]; //create a text field and add to the sub view myFrame.origin.y += myFrame.size.height + 10.0f; UITextField *myTextField = [[UITextField alloc] initWithFrame:myFrame]; myTextField.borderStyle = UITextBorderStyleRoundedRect; myTextField.placeholder = [NSString stringWithFormat:@"Enter data in field %i", i]; myTextField.tag = i+1; [myView addSubview:myTextField]; //set the scroll view delegate to self so that we can listen for changes self.myScrollView.delegate = self; //add the subview to the scroll view [self.myScrollView addSubview:myView]; } //set the content size of the scroll view, we keep the height same so it will only //scroll horizontally self.myScrollView.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height); //we set the origin to the 3rd page CGPoint scrollPoint = CGPointMake(self.view.frame.size.width * 2, 0); //change the scroll view offset the the 3rd page so it will start from there [myScrollView setContentOffset:scrollPoint animated:YES]; [self.view addSubview:self.myScrollView]; } //scrolling ends - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{ //find the page number you are on CGFloat pageWidth = scrollView.frame.size.width; int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; NSLog(@"Scrolling - You are now on page %i",page); } //dragging ends, please switch off paging to listen for this event - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *) targetContentOffset NS_AVAILABLE_IOS(5_0){ //find the page number you are on CGFloat pageWidth = scrollView.frame.size.width; int page = floor((scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1; NSLog(@"Dragging - You are now on page %i",page); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } @end
No comments:
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.