Pregunta

Tengo dos uIViews. Estoy usando uno para contener al otro para que pueda deslizar uno dentro del otro. Me encuentro con un problema donde, aunque una subviega se recorta a los límites de su padre, todavía está recibiendo eventos táctiles y bloqueando el acceso a otras vistas subyacentes.

Tengo tres capturas de pantalla que muestran el diseño. He coloreado el padre verde y el niño rojo.

La idea es que el usuario hace clic en "Ver" y la subvista se desliza hacia arriba. Cuando la subviega está en la posición predeterminada, la UITABBAR está cubierta y no se puede hacer clic. Puede ver esto en la primera imagen donde está presente la vista roja en la parte inferior. Cuando la subviega se mueve a la parte superior, se puede hacer clic en UITABBAR ya que ahora es visible. En la tercera imagen, he mostrado lo que es con Cliptobounds habilitado en la UIView Green.

He habilitado Cliptobounds, por lo que no puedo entender por qué la subvista está bloqueando la UITABBAR subyacente. ¿Mi comprensión de Cliptobounds está completamente equivocada?

¿Fue útil?

Solución

Uso de ClipTounds solo afecta al diseño visual de una Subview, no el diseño lógico.Esto significa que mientras mi subvisión no es visible para el ojo, es visible para tocar.

He trabajado en este número animando el tamaño de la subvisión en lugar de su posición.En mi código a continuación, la STICEPROXIMITYVIEW es la SubView.Animalo su tamaño en 40 píxeles para volver a la vista del título negro.

[UIView beginAnimations:@"stationProximityBar" context:NULL];
self.stationProximityView.view.frame = CGRectOffset(self.stationProximityView.view.frame, 0, -40);
[UIView commitAnimations];

Cuando ya no lo necesito, lo animo fuera de la vista.

[UIView beginAnimations:@"stationProximityBar" context:NULL];
self.stationProximityView.view.frame = CGRectMake(0 ,0, 320, 500);
[UIView commitAnimations];

Si el usuario saca el botón Ver, se muestra toda la subvista:

 [UIView beginAnimations:@"stationProximityBar" context:NULL];
 self.stationProximityView.view.frame = CGRectMake(0,460,320,40);
 [UIView commitAnimations];

El despido hace que la vista se oculte de la misma manera que la pequeña barra.

 [UIView beginAnimations:@"hideStationProximityBar" context:NULL];
 self.stationProximityView.view.frame = CGRectMake(0,0,320,500);
 [UIView commitAnimations];

En este momento, este código solo se está probando en el iPhone 5, por lo que la altura de 500 codificada de 500 causaría problemas en los modelos anteriores del iPhone.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top