Pregunta

Estoy escribiendo una aplicación para iPhone con una barra de pestañas y una barra de navegación. En cierto momento, estoy insertando una instancia de mi clase DetailsViewController en la pila del controlador de navegación para mostrarla.

Este controlador crea su jerarquía de vistas en código: la propiedad view del controlador se establece en un UIScrollView, que contiene un UIView (llamémoslo " contentView " contentView ") dimensionado para contener todo el contenido ser mostrado. En la parte inferior de este contentView, tengo cuatro UIButtons.

Ahora, cuando ejecuto la aplicación (en el simulador en la actualidad), y me desplazo hacia la parte inferior de la vista, los dos botones superiores responden a los toques; el tercero responde a los toques solo en la parte superior, y el botón inferior no responde a los toques en absoluto. Al hacer clic en varias partes del tercer botón, parece que los 93 píxeles más bajos de la vista de desplazamiento no están pasando los eventos táctiles a sus subvistas.

93 es sospechoso: también es la altura combinada de la barra de pestañas (49 píxeles) y la barra de navegación (44 píxeles). Sin embargo, la barra de navegación y la barra de pestañas están fuera de la vista de desplazamiento. ¿Alguna sugerencia de por qué esto podría estar pasando?

Aquí está el código en cuestión:

- (void)loadView
{
    CGRect frame = [[UIScreen mainScreen] applicationFrame]; 
    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:frame];
    scrollView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    scrollView.delegate = self;
    self.view = scrollView;

    UIView *contentView = [[UIView alloc] initWithFrame:scrollView.bounds];
    contentView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight);
    [scrollView addSubview:contentView];

    CGSize viewSize = contentView.bounds.size;
    CGSize size;
    CGFloat y = 0;

    /* Snip creating various labels and image views */

    /* Actions view creates and lays out the four buttons; its sizeThatFits:
    ** method returns the frame size to contain the buttons */

    actionsView = [[PropertyDetailActionsView alloc] initWithFrame:CGRectZero];
    actionsView.autoresizingMask = (UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleWidth);
    actionsView.delegate = self;
    size = [actionsView sizeThatFits:viewSize];
    actionsView.frame = CGRectMake(0, y, size.width, size.height);
    [contentView addSubview:actionsView];
    y += size.height;

    [contentView setFrame:CGRectMake(0, 0, viewSize.width, y)];
    scrollView.contentSize = contentView.frame.size;

    [contentView release];
    [scrollView release];
}
¿Fue útil?

Solución

Como sugerí ayer en Twitter, puede tener algo que ver con el margen inferior flexible establecido en el actionsView.

Esa sugerencia no resolvió el problema, pero llevó a la dirección correcta. Al eliminar la altura flexible del contenido, el problema se ha solucionado.

Entonces, si alguien por ahí está teniendo problemas similares, intente jugar con sus Máscaras de Autorización.

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