简体   繁体   中英

UIScrollView delegate properties not working properly

My issue is that the properties (is that the right word?) of my scrollView are not working. I am trying to get the scrollView to page, but it seems as though it ignores my line of code that says

[scrollView setPagingEnabled:YES];

The scrollView scrolls up and down as well as side to side (the contentSize is set), but it does not snap to a page, and testing other delegate properties that aren't working it appears that the problem is a result of this.

It seems as though I have done something wrong in declaring the delegate, which is supposed to be self. Here is the header of my .h that makes DayViewController a UIScrollView delegate

@interface DayViewController : UIViewController <UIScrollViewDelegate> {
UIScrollView *scrollView;
//other code......
}

Here is the relevant part of my .m file where the delegate is set to self, and I try to adjust properties of the UIScrollView.

- (void)viewDidLoad
{
[super viewDidLoad];
tester = [Global tester];
cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
viewsInMemory = [[NSMutableArray alloc] init];

for (int i = 0; i < 3; i++) {
    [viewsInMemory insertObject:[NSNull null] atIndex:i];
}

scrollView = [[UIScrollView alloc] init];
scrollView.delegate = self;
[scrollView setScrollEnabled:YES];
[scrollView setPagingEnabled:YES];
scrollView = [[UIScrollView alloc] initWithFrame:(CGRectMake(0, 0, 320, self.view.frame.size.height))];
scrollView.backgroundColor = [UIColor lightGrayColor];

[self loadInitialDays];


[scrollView addSubview:(currentDayView)];
[self.view addSubview:(scrollView)];

}

I understand that other parts of my code might look inefficient or whatever, but that is not what I am asking for help with. The only thing that I need is for one of you wonderful people to figure out why the delegate is not working. Thanks a bunch!

The issue is with this line:

scrollView = [[UIScrollView alloc] initWithFrame:(CGRectMake(0, 0, 320, self.view.frame.size.height))]; .

You're re-initializing scrollView so all of the above properties are ignored and the only property actually set is the backgroundColor property.

To fix this change this line:

scrollView = [[UIScrollView alloc] init];

to

scrollView = [[UIScrollView alloc] initWithFrame:(CGRectMake(0, 0, 320, self.view.frame.size.height))]; .

So your final code looks like this:

scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, self.view.frame.size.height)];
scrollView.delegate = self;
[scrollView setScrollEnabled:YES];
[scrollView setPagingEnabled:YES];
scrollView.backgroundColor = [UIColor lightGrayColor];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM