Tengo una UIScrollView ontop de mi UIViewController recreando un efecto como en la aplicación Gowalla iPhone cuando estás en la página de un spot. Debajo de mi vista de desplazamiento tengo un botón que quiero poder realizar su acción incluso cuando el marco de la vista de desplazamiento lo cubre (donde está sobre el botón, la vista de desplazamiento está despejada). ¿Cómo haría algo como esto? ¿Es posible? (tiene que ser, Gowalla [de alguna manera] lo hizo)¿Cómo obtener una UIView debajo de UIScrollView para detectar toques?
Respuesta
No tengo idea de qué podría hacer esta aplicación "Gowalla"; con suerte, su descripción de "un botón detrás de la vista de desplazamiento, que puede tocar 'a través' de la vista de desplazamiento" es precisa.
Si su botón detrás de la vista de desplazamiento puede dimensionarse para llenar toda el área contentSize
de la vista de desplazamiento sin atornillar su interfaz, la solución más fácil sería simplemente colocarla dentro de la vista de desplazamiento (en todas las otras vistas) y haz exactamente eso.
De lo contrario, su mejor opción es probablemente crear una vista personalizada con un fondo claro para colocarla en la vista de desplazamiento como se indicó anteriormente. La solución fácil es tener la vista personalizada (probablemente un UIControl) simplemente haga lo que toque el botón. Si eso no es posible por alguna razón, su mejor opción sería anular hitTest:withEvent:
en la vista personalizada para devolver el botón subyacente. Sería cauteloso de anular hitTest:withEvent:
en la vista de desplazamiento, ya que podría interferir con el desplazamiento.
Pruebe agregar el botón en la parte superior de la vista de desplazamiento. El único problema con eso es que si presiona el botón, no podrá interactuar con scrollView, pero seguirá estando visible.
En cuanto a mí, transferiré el evento táctil a otra vista anulando los siguientes métodos.
- - touchesBegan: withEvent:
- - touchesMoved: withEvent:
- - touchesEnded: withEvent:
- - touchesCancelled: withEvent:
igual de esta manera,
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// pass touch event by default implement.
[super touchesBegan:touches withEvent:event];
// redirect the touch events.
[anotherView touchesBegain:touches withEvent:event];
}
hitTest: withEvent: se utiliza para decidir qué vista va a eventos táctiles respuesta en el árbol vista de jerarquía. Si la vista no quiere responder al evento touch, devolverá nil en hitTest. Como resultado, no se invocarán los métodos de evento táctiles anteriores.
- 1. Cómo robar toques de UIScrollView?
- 2. Pasar toques de deslizamiento desde UIView a UIScrollView subyacente para un desplazamiento correcto
- 3. iOS - Detectando toques en una UIView?
- 4. Cómo obtener UIScrollView contentOffset durante una animación
- 5. Arrastrar UIView debajo del dedo
- 6. Desplazamiento de una UITableView dentro de UIScrollView
- 7. Cómo detectar toques en la barra de estado
- 8. Detectar evento táctil en UIScrollView Y en los componentes de UIView [que se encuentra dentro de UIScrollView]
- 9. ¿Cómo pasar un 'toque' a UIButton que se encuentra debajo de UIView con UISwipeGestureRecognizer?
- 10. Cómo detectar "Touch Down" en la supervista de UIScrollView?
- 11. iOS: reenviar todos los toques a través de una vista
- 12. Cómo crear una imagen desde un UIView/UIScrollView
- 13. UIView, cómo determinar cuándo toques entró en la vista
- 14. ¿Cómo pasar un evento táctil desde una UIView a la UIView (s) debajo de él?
- 15. MKOverlayView y toques
- 16. iOS: ¿Transferir la propiedad de UIView mientras ocurren los toques?
- 17. UIView: Cómo comprobar si los toques terminaron dentro de la misma vista en la que comenzaron
- 18. ¿Cómo obtener el color de un píxel en una UIView?
- 19. Cómo incrustar un UITableView en una UIScrollView
- 20. Obtener un rectángulo visible de UIView
- 21. iPhone - UIScrollView ... detectar las coordenadas de un toque
- 22. Detectar golpecito en el "espacio vacío" de UIView
- 23. detectar toques de usuario en MKMapView en IOS 5
- 24. Cómo detectar cuando un UIScrollView ha terminado de desplazarse
- 25. ¿Cómo puedo obtener el nivel de zoom actual en UIScrollView?
- 26. ¿Cómo puedo desplazar una UIView de tamaño indefinido dentro de un UIScrollView
- 27. ¿Cómo obtener la palabra debajo del cursor?
- 28. ¿Cómo detectar cuando un UIView ha cambiado de tamaño?
- 29. iphone/ipad - padre UIView está bloqueando los toques para llegar a las subvistas - ¿por qué?
- 30. Detectar un solo toque en UIScrollView que contiene 'n' UIImageViews
Esta es una buena respuesta. Lo aprecio. –