2010-11-11 13 views
6

Tengo un UIPageControl. Cuando hago clic en un punto para cambiar la página, no pasa nada. El segundo punto no se resalta.UIPageControl no responde al tacto, no cambia el punto

Sin embargo, funciona bien cuando muevo mi UIScrollView. En ese caso, se resalta el segundo punto.

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]; 

Esto debe invocarse cuando cambio el valor de PageControl pero no se invoca ya que no responde al tacto.

- (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]; 
} 

Respuesta

17

set marco de la PageControl (anchura y altura), no sólo el centro de lo contrario, tiene dimensión cero y no responde a los toques.

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

Esto no funciona. Establecí el número de páginas en 7. Cuando hice clic en los puntos 2 y 3, no respondió. Hice clic en el punto 4 y respondió y siguió haciendo clic hasta llegar al último punto, es decir, 7. Ahora, cuando hago clic en el punto 2 y 3, ¡responde! –

+1

@pratikshabhisikar: La respuesta fue específicamente para resolver el problema de Alex L's. Por supuesto, no es ni puede ser la respuesta a cada problema de UIPageControl. Si no sucede para resolver su situación específica, la causa y la solución de su problema debe ser diferente y no justifica un voto a la baja. – Anna

+1

Estaba haciendo [[UIPageControl alloc] init] sin establecer un marco porque siempre tiendo a pensar que los tamaños de UIPageControl se ajustan automáticamente. ¡Y estaba equivocado! [[UIPageControl alloc] initWithFrame: CGRect] hizo el truco. TY! – DZenBot

4

Tuve los mismos síntomas en mi aplicación recientemente. Mi solución fue mover el UIPageControl en la jerarquía de vistas (z-index, si se quiere) para que esté por encima del UIScrollView dentro de la vista raíz. Si no está por encima del UIScrollView, no recibirá toques aunque parezca visible.

No estoy seguro de si este es su problema, pero sólo pensaba que iba a meter su cuchara.

2

veces ayuda a llevar el PageControl al frente de todos los subvistas superpuestos.

Ese era el truco en mi caso:

[self.view bringSubviewToFront: pageControl]; 
2

A veces, cuando el ancho es demasiado pequeño PageControl Esto también puede ocurrir. Intente establecer el ancho del componente de control de página para que sea bastante grande, p. Ej. 320. Entonces debería funcionar mejor.

+0

su comentario "Wake me" y configuro el pageControl en el ancho de su vista principal, y ahora los repsond to taps son geniales. – user1105951

+0

¡Bien! Estoy feliz de saber eso. – flame3

Cuestiones relacionadas