Mi problema: tengo una supervista EditViewque ocupa básicamente todo el marco de la aplicación, y una subvista MenuViewque ocupa solo el ~ 20% inferior, y luego MenuViewcontiene su propia subvista ButtonViewque en realidad reside fuera de MenuViewlos límites (algo como esto :) ButtonView.frame.origin.y = -100.
(nota: EditViewtiene otras subvistas que no forman parte de MenuViewla jerarquía de vistas, pero que pueden afectar la respuesta).
Probablemente ya conozca el problema: cuando ButtonViewestá dentro de los límites de MenuView(o, más específicamente, cuando mis toques están dentro MenuViewde los límites de), ButtonViewresponde a eventos de toque. Cuando mis toques están fuera de MenuViewlos límites (pero aún dentro ButtonViewde los límites), no se recibe ningún evento de toque ButtonView.
Ejemplo:
- (E) es
EditViewel padre de todas las vistas - (M) es
MenuViewuna subvista de EditView - (B) es
ButtonViewuna 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 MenuViewanularse 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!