2010-11-11 14 views
6

Ho un UIPageControl. Quando clicco su un punto per cambiare pagina, non succede nulla. Il secondo punto non viene evidenziato.UIPageControl non risponde al tocco, non cambia punto

Funziona bene, tuttavia, quando si scorre il mio UIScrollView. In tal caso, il secondo punto è evidenziato.

pageControl = [[UIPageControl alloc] init] ; 
pageControl.center = CGPointMake(160.0f, 430.0f); 
pageControl.numberOfPages=nPages; 
pageControl.currentPage=0; 
pageControl.hidesForSinglePage = YES; 
pageControl.userInteractionEnabled =YES; 

[pageControl addTarget:self action:@selector(pageTurn:) forControlEvents:UIControlEventValueChanged]; 

[self.view addSubview:pageControl]; 

Questo dovrebbe essere chiamato quando cambio pageControl Value ma non viene chiamato poiché non risponde al tocco.

- (void) pageTurn: (UIPageControl *) aPageControl 
{ 
    int whichPage = aPageControl.currentPage; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:0.3f]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
    sv.contentOffset = CGPointMake(320.0f * whichPage, 0.0f); 
    [UIView commitAnimations]; 
} 

risposta

17

set struttura del PageControl (larghezza e altezza) non solo il centro altrimenti ha zero dimensioni e non risponde al tocco.

pageControl = [[UIPageControl alloc] 
       initWithFrame:CGRectMake(100, 430, 200, 50)]; 
pageControl.center = CGPointMake(160.0f, 430.0f); 
+1

Questo non funziona. Ho impostato il numero di pagine su 7. Quando ho cliccato sui punti 2 e 3, non ha risposto. Ho cliccato sul punto 4 e ha risposto e ho continuato a cliccarlo fino a quando non ho raggiunto l'ultimo punto, ad esempio 7. Ora quando clicco sui punti 2 e 3, risponde !! –

+1

@pratikshabhisikar: la risposta è stata specificamente per risolvere il problema di Alex L'. Ovviamente non è e non può essere la risposta a ogni problema UIPageControl. Se non dovesse risolvere la tua situazione specifica, la causa e la soluzione del tuo problema devono essere diverse e non giustificare un downvote. – Anna

+1

Stavo facendo [[UIPageControl alloc] init] senza impostare un frame perché tendo sempre a pensare che le dimensioni di UIPageControl si adattino automaticamente. E ho sbagliato! [[UIPageControl alloc] initWithFrame: CGRect] ha fatto il trucco. TY! – DZenBot

4

Ho avuto gli stessi sintomi nella mia app di recente. La mia soluzione era spostare lo UIPageControl nella gerarchia della vista (z-index, se lo si desidera) in modo che fosse sopra lo UIScrollView all'interno della vista radice. Se non è al di sopra del UIScrollView non otterrà i tocchi anche se sembra che sia visibile.

Non sono sicuro se questo è il tuo problema, ma solo pensato che avrei carillon.

2

volte aiuta a portare la PageControl a fronte di tutte le subviews sovrapposti.

Quello era il trucco nel mio caso:

[self.view bringSubviewToFront: pageControl]; 
2

A volte, quando la larghezza PageControl è troppo piccolo Questo può succedere anche. Prova a impostare la larghezza del componente pagecontrol in modo che sia abbastanza grande, ad es. 320. Quindi dovrebbe funzionare meglio.

+0

sul tuo commento "Svegliami" e imposto il pageControl sulla larghezza della sua visualizzazione genitore, e ora il replay ai tap è fantastico. – user1105951

+0

Buono! Sono felice di saperlo. – flame3

Problemi correlati