vistas vista renderizar parciales parcial pagina net mvc multiples misma ejemplo crear control centro cargar asp aparece iphone ios ipad uiview

iphone - renderizar - vista parciales mvc



¿Cómo acceder a una subvista de vista parcial parcialmente fuera de su vista de padres? (3)

Tengo la siguiente arquitectura UIVIew (x, y, ancho, alto):

- MainWindow (0,0,768,1024) - MainView (0,0,768,80) - containerview (500,40,120,80) - subview (500,40,120,80) -some buttons

Mi problema es que la parte inferior de la subvista se encuentra fuera del límite de MainView. Los botones en la parte inferior de la subvista no responden. El que está arriba es receptivo, porque su posición también está dentro de Mainview.

¡Así que cuando intento hacer clic en los botones en la parte inferior de la subvista, realmente hago clic en MainWindow! La posición de los botones inferiores de la subvista no está dentro de MainView

¿Hay alguna manera de hacer que toda mi subvista esté disponible incluso si la mitad está fuera del límite de MainView?

Sé que puedo crear la subvista directamente debajo de MainWindow, pero no quiero rehacer mi código.

Actualizar aquí cómo es el diseño de mis vistas: A = MainWindow, B = MainView, C = vista de contenedor, D = subvista, X = donde quiero hacer clic

+----------------------------+ |A | |+-------------------------+ | ||B | | || +----------+ | | |+------------|C&D |-+ | | |X | | | +----------+ | +----------------------------+

Gracias


No estoy 100% seguro de entender lo que intenta hacer, pero si la subvista es visible pero no está dentro de MainView, la única forma de obtener acciones desde la subvista a MainView es recibirlas en la subvista y pasarlas a MainView. .

Si esa no es una respuesta, necesito más información sobre lo que estás tratando de lograr.


Acabo de resolver esto yo mismo. Al igual que usted, mi vista ''B'' lanzó mi vista ''C'' y partes de ''C'' fuera de ''B'' no estaban disponibles.

Mi solución fue ligeramente diferente porque en mi caso ''C'' estaba totalmente fuera de, pero obligado a, ''B'' (y fue abierto por ''B'').

En mi caso, simplemente adjunté ''C'' a ''A'' e hice uso de devoluciones de llamada @property para comunicar los cambios en ''C'' con ''B'' (a través de ''A'').

En su caso, otra solución sería simplemente extender el cuadro de ''B'' para abarcar ''C'' - puede extenderlo una vez que ''C'' ya no sea visible. Haga que el fondo de ''B'' sea claro.


hitTest:(CGPoint)point withEvent:(UIEvent *)event implementar el hitTest:(CGPoint)point withEvent:(UIEvent *)event en su MainView.

Ver la documentación

Los puntos que se encuentran fuera de los límites del receptor nunca se informan como aciertos, incluso si se encuentran dentro de una de las subvistas del receptor. Las subvistas pueden extenderse visualmente más allá de los límites de sus padres si la propiedad clipsToBounds de la vista principal está establecida en NO. Sin embargo, la prueba de impacto siempre ignora los puntos fuera de los límites de la vista principal.

Dirigiendo un comentario:

Debes subclasificar a UIView. Luego configure la clase de MainView en la punta a su subclase UIView.

Aquí se analizan algunas pruebas exitosas , pero no pude encontrar una explicación clara de cómo funciona.

Prueba esta pregunta de

No lo he probado, pero el siguiente código podría hacer lo que necesita:

- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event { for(UIView *subview in self.subviews) { UIView *view = [subview hitTest:[self convertPoint:point toView:subview] withEvent:event]; if(view) return view; } return [super hitTest:point withEvent:event]; }