2013-04-15 3 views
3

Я пытаюсь использовать UIPageControl в первый раз, и я не могу заставить его вызвать функцию на UIControlEventValueChanged. Я что-то упустил? Я даже попробовал реализацию раскадровки, но те же сломанные результаты. Я попробовал UIControlEventTouchUpInside и другие действия. Ни один из них не вызывает функцию changePage:.UIPageControl не вызывает селектор on valueChanged

В .h:

@property (nonatomic, retain) UIPageControl *introPageControl; 
-(IBAction)changePage:(id)sender; 

В .m:

@synthesize introPageControl; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    self.introPageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0,208,self.view.frame.size.width,36)]; 
    self.introPageControl.numberOfPages = 4; 
    self.introPageControl.currentPage = 0; 
    [self.introPageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged]; 
    [self.view addSubview:self.introPageControl]; 
} 

-(IBAction)changePage:(id)sender { 
    // NEVER GETS CALLED :(
} 
+0

я копировать вставить код и посмотреть, что методы changePage называемые. Не могли бы вы предоставить более подробную информацию? Может быть, вы добавляете еще один подзаголовок над своим контролем страницы? –

+0

Или вы можете отказаться от подписки на мероприятия? –

+0

@AlexanderMerchi благодарит за ваш ответ. self.introPageControl - последний добавленный объект, поэтому он находится на самом верхнем уровне. Как я могу проверить отмену подписки на события? Я никогда не добавлял явный код для этого. – AddisDev

ответ

2

UIControlEventValueChanged вызывается только тогда, когда объект был вид UIPageControl вкладок.

1

Swift 3:

pageControl.numberOfPages = 6 
pageControl.currentPage = 0 
pageControl.addTarget(self, action: #selector(pageControlTapHandler(sender:)), for: .touchUpInside) 

... 

func pageControlTapHandler(sender:UIPageControl) { 
    print("currentPage:", sender.currentPage) //currentPage: 1 
}