Mi problema: tengo una supervista EditView
que ocupa básicamente todo el marco de la aplicación, y una subvista MenuView
que ocupa solo el ~ 20% inferior, y luego MenuView
contiene su propia subvista ButtonView
que en realidad reside fuera de MenuView
los límites (algo como esto :) ButtonView.frame.origin.y = -100
.
(nota: EditView
tiene otras subvistas que no forman parte de MenuView
la jerarquía de vistas, pero que pueden afectar la respuesta).
Probablemente ya conozca el problema: cuando ButtonView
está dentro de los límites de MenuView
(o, más específicamente, cuando mis toques están dentro MenuView
de los límites de), ButtonView
responde a eventos de toque. Cuando mis toques están fuera de MenuView
los límites (pero aún dentro ButtonView
de los límites), no se recibe ningún evento de toque ButtonView
.
Ejemplo:
- (E) es
EditView
el padre de todas las vistas - (M) es
MenuView
una subvista de EditView - (B) es
ButtonView
una subvista de MenuView
Diagrama:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Debido a que (B) está fuera del marco de (M), nunca se enviará un toque en la región (B) a (M); de hecho, (M) nunca analiza el toque en este caso, y el toque se envía a el siguiente objeto de la jerarquía.
Objetivo: Supongo que la anulación hitTest:withEvent:
puede resolver este problema, pero no entiendo exactamente cómo. En mi caso, ¿debería hitTest:withEvent:
anularse en EditView
(mi supervista 'maestra')? ¿O debería MenuView
anularse en la supervisión directa del botón que no recibe toques? ¿O estoy pensando en esto incorrectamente?
Si esto requiere una explicación extensa, un buen recurso en línea sería útil, excepto los documentos UIView de Apple, que no me lo han dejado claro.
¡Gracias!