Xcode 6 beta4, UIButton no es responsable en collectionviewcell
-
20-12-2019 - |
Pregunta
Estoy usando Xcode 6.0 beta 4, encuentro que los botones en el UICollectionViewCell
no hay respuesta al toque.
Detalles como:
UICollectionViewController
--- UICollectionViewCell
------ UIButton
(UIButton
tiene dos autolayout
restricciones para poner el UIButton
en el centro vertical y en el centro horizontal en el Cell
)
Ahora haz el cell
el tamaño es algo así como:(300, 1000)
Ejecute la aplicación en iPhone Simulator o dispositivo con iOS 7.0 o 7.1.x, el botón no se puede tocar, pero pruébelo en el simulador de iOS 8.0, está bien.También si cambio de celular size
a (300, 200)
, el botón funciona.
Creo que es un error en esta versión beta de Xcode, ¿verdad?
¿Y dónde puedo disparar el error a Apple?
Solución
Se han olvidado de configurar una máscara de tamaño automático para contentView de UICollectionViewCell
esto solucionalo
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
Otros consejos
Parece que esto no es realmente un error, sino un problema de incompatibilidad al apuntar a dispositivos iOS 7 que usan Xcode 6. publicación de ecotax describe esto con más detalle, pero aquí está la respuesta de Apple DTS:
En iOS 7, las vistas de contenido de las celdas se dimensionaban mediante máscaras de tamaño automático.En iOS 8, esto cambió, las celdas dejaron de usar las máscaras de tamaño automático y comenzaron a ajustar el tamaño de la vista de contenido en layoutSubviews.Si una punta está codificada en iOS 8 y luego la decodifica en iOS 7, tendrá una vista de contenido sin una máscara de tamaño automático y ningún otro medio para ajustar su tamaño.Entonces, si alguna vez cambia el marco de la celda, la vista de contenido no seguirá.
Las aplicaciones que se están implementando nuevamente en iOS 7 tendrán que solucionar este problema ajustando el tamaño de la vista de contenido, agregando máscaras de tamaño automático o agregando restricciones.
Sin embargo, la solución anterior de Alexey funcionará:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}