UIPageControl - Вид не меняется при нажатии точек

Я использую pageControl в своем приложении. Представления не меняются при нажатии на точки, но на обоих концах pageControl, когда я нажимаю, представления меняются. Я хочу, чтобы они менялись при нажатии на точку. Что делать? Есть ли какой-нибудь метод, который мне нужно реализовать?

Вот код

#import "ScrollingViewController.h"

@implementation ScrollingViewController
@synthesize scrollView;
@synthesize pageControl;

- (void)viewDidLoad 
{
    [super viewDidLoad];
    [self setupPage];
    pageControl =[[UIPageControl alloc] initWithFrame:CGRectMake(0,390,320,100)]; 
    pageControl.userInteractionEnabled =YES;
    pageControl.numberOfPages = 5; 
    pageControl.currentPage = 0;
    [self.pageControl setBackgroundColor:[UIColor blackColor]];
    pageControl.enabled = TRUE;
    [pageControl setHighlighted:YES];
    [pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:pageControl]; 
}


- (void)didReceiveMemoryWarning 
{
    [super didReceiveMemoryWarning];
}

- (void)viewDidUnload 
{
    [scrollView release];
    [pageControl release];
}


- (void)dealloc 
{
    [super dealloc];
}


- (void)setupPage
{
    scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0,0,320,400)];
    [scrollView setContentSize:CGSizeMake(1000, 800)];
    //scrollView.contentSize = CGSizeMake(1000,800);
    scrollView.scrollsToTop = NO;
    [self.scrollView setBackgroundColor:[UIColor blackColor]];
    [scrollView setCanCancelContentTouches:NO];
    scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
    scrollView.clipsToBounds = YES;
    scrollView.scrollEnabled = YES;
    scrollView.pagingEnabled = YES;

    NSUInteger nimages = 0;
    CGFloat cx = 0;
    for (; ; nimages++) 
    {
        NSString *imageName = [NSString stringWithFormat:@"image%d.jpg", (nimages + 1)];
        UIImage *image = [UIImage imageNamed:imageName];
        if (image == nil) 
        {
            break;
        }
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        CGRect rect = imageView.frame;
        rect.size.height = image.size.height;
        rect.size.width = image.size.width;
        rect.origin.x = ((scrollView.frame.size.width - image.size.width) / 2) + cx;
        rect.origin.y = ((scrollView.frame.size.height - image.size.height) / 2);

        imageView.frame = rect;

        [scrollView addSubview:imageView];
        [imageView release];

        cx += scrollView.frame.size.width;
    }

    self.pageControl.numberOfPages = nimages;
    [scrollView setContentSize:CGSizeMake(cx, [scrollView bounds].size.height)];
    scrollView.delegate = self;
    [self.view addSubview:scrollView];
}


- (void)scrollViewDidScroll:(UIScrollView *)_scrollView
{
    if (pageControlIsChangingPage) 
    {
        return;
    }


    CGFloat pageWidth = _scrollView.frame.size.width;
    int page = floor((_scrollView.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = page;
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)_scrollView 
{
    pageControlIsChangingPage = NO;
}



- (IBAction)changePage:(id)sender 
{
    /*
     *  Change the scroll view
     */
    CGRect frame = scrollView.frame;
    frame.origin.x = frame.size.width * pageControl.currentPage;
    frame.origin.y = 0;
    [scrollView scrollRectToVisible:frame animated:YES];
    pageControlIsChangingPage = YES;
}

@end
7
задан Hagelin 12 May 2011 в 11:54
поделиться