Xcode 6 Beta4, UIButton ist in Collectionviewcell nicht verantwortlich
-
20-12-2019 - |
Frage
Ich verwende Xcode 6.0 Beta 4 und stelle fest, dass die Schaltflächen in der UICollectionViewCell
reagiert nicht auf das Tippen.
Angaben wie:
UICollectionViewController
--- UICollectionViewCell
------ UIButton
(UIButton
hat zwei autolayout
Einschränkungen, um die zu setzen UIButton
in der vertikalen Mitte und in der horizontalen Mitte Cell
)
Machen Sie nun das cell
Größe ist etwa:(300, 1000)
Führen Sie die App im iPhone-Simulator oder auf einem Gerät mit iOS 7.0 oder 7.1.x aus. Die Schaltfläche ist nicht berührbar, aber testen Sie im iOS 8.0-Simulator, ob es in Ordnung ist.Auch wenn ich die Zelle wechsle size
Zu (300, 200)
, der Knopf funktioniert.
Ich denke, es ist ein Fehler in dieser Xcode-Betaversion, oder?
Und wo kann ich den Fehler an Apple weiterleiten?
Lösung
Sie haben vergessen, eine AutoresizingMask für die ContentView einer UICollectionViewCell festzulegen
Dies behebt das Problem
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
Andere Tipps
Es scheint, dass es sich hierbei nicht wirklich um einen Fehler handelt, sondern um ein Inkompatibilitätsproblem bei der Ausrichtung auf iOS 7-Geräte mit Xcode 6. Beitrag von ecotax beschreibt dies ausführlicher, aber hier ist die Antwort von Apple DTS:
In iOS 7 wird die Größe der Inhaltsansichten von Zellen mithilfe von Masken zur automatischen Größenänderung selbst angepasst.In iOS 8 wurde dies geändert, Zellen verwendeten nicht mehr die automatischen Größenanpassungsmasken und begannen mit der Größenanpassung der Inhaltsansicht in layoutSubviews.Wenn eine Feder in iOS 8 kodiert und dann in iOS 7 dekodiert wird, erhalten Sie eine Inhaltsansicht ohne automatische Größenänderungsmaske und ohne andere Möglichkeit, die Größe selbst anzupassen.Wenn Sie also jemals den Rahmen der Zelle ändern, folgt die Inhaltsansicht nicht.
Apps, die wieder auf iOS 7 bereitgestellt werden, müssen dies umgehen, indem sie die Größe der Inhaltsansicht selbst anpassen, automatische Größenanpassungsmasken hinzufügen oder Einschränkungen hinzufügen.
Alexeys obige Lösung reicht jedoch aus:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}