ios objective-c uicollectionview uitapgesturerecognizer

ios - UITapGestureRecognizer no se activa después de rotar



objective-c uicollectionview (1)

Tengo un TabBarController que tiene dos pestañas. En cada pestaña tengo UICollectionView y UITapGestureRecognizer que se UITapGestureRecognizer cada vez que UITapGestureRecognizer en collectionView . Todo funciona bien después de que se inicia la aplicación. Pero si giro a la orientación horizontal, TapGestureRecognizer dispara solo en el marco anterior de collectionView . Ignora completamente el lado derecho de la pantalla.

Pero si cambio a otra pestaña y luego regreso, también funcionará bien para la orientación horizontal. Simplemente no entiendo lo que estoy haciendo mal.

Así es como cambio el modo de orientación para collectionView :

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; [self.cardCollectionView.collectionViewLayout invalidateLayout]; }


invalidateLayout en realidad no invalida el diseño de la vista de colección, fuerza la invalidación y vuelve a calcular el diseño interno de la celda - doc

Para gestionar los cambios en el marco de vista de colección, debe pensar en ello como en la vista normal. Intente configurar la máscara de aumento automático de su vista de colección (por ejemplo, en viewDidLoad) como:

self.cardCollectionView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

ACTUALIZAR

Intenta configurar el aumento automático para tu vista de colección en http://d.pr/i/nk3o , por código se verá así:

self.cardCollectionView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight|

;

UIViewAutoresizingFlexibleBottomMargin es importante para decir UIKit desde donde calcular la posición