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