Ich bin dabei, meine App mit Swift 2.3 und Xcode 8 Beta 1 auf iOS10 zu aktualisieren und habe festgestellt, dass es eine UITableViewHeaderFooterContentView
gibt, die Berührungen der UIButton in meiner Unterklasse von UITableViewHeaderFooterView
blockiert.
Auf dem Xcode 8 Beta 1 Simulator funktioniert die UIButton auf iOS9.3, aber nicht auf iOS10.
1) Gibt es dafür Unterlagen?
2) Wie kann ich sicherstellen, dass meine UI-Elemente auf der neuen Inhaltsansicht in iOS10 stehen? (oder erlauben Sie Berührungen durch UITableHeaderFooterContentView
)
Danke!
Tabellenkopf
%Vor% Codeansichtscontroller
dateCell.addNewEventButton
ist die UIButton, die keine Berührungen mehr in iOS10 empfängt
Die problematische Ansicht ist tatsächlich contentView
von UITableViewHeaderFooterView
(siehe Apple Docs ). Sie sollten also sendSubview(toBack:)
verwenden können, um die Berührungen zu vermeiden.
Allerdings scheint es, dass UITableViewHeaderFooterView
unter iOS9 den contentView
nicht korrekt initialisiert, wenn die Ansicht von einer NIB geladen wird. Obwohl die Eigenschaft contentView
nicht optional ist, ist sie tatsächlich null, und Sie erhalten einen BAD ACCESS-Fehler, wenn Sie versuchen, darauf zuzugreifen. Sie können auch keinen Wert für contentView
(entweder im Code oder als Outlet in IB) festlegen, da es sich um eine schreibgeschützte Eigenschaft (*) handelt. Die einzige Lösung, an die ich denken kann, ist die Verwendung von #available
, um Code zu verwenden, um contentView nach hinten zu verschieben, wenn Sie mit iOS 10 oder neuer arbeiten. Ich würde den relevanten Code in deine Unterklasse einfügen:
(*) Da ich mich auf wilde Spekulationen einlasse, vermute ich, dass Apple den Code UITableViewHeaderFooterView
stark auf UITableViewCell
basierte. Da IB UITableViewCells
in seiner Objektbibliothek hat (und beachten Sie, dass diese die contentView
der Zelle enthalten), kann sichergestellt werden, dass die contentView der Zelle korrekt instanziiert wird. Aber da es in der Objektbibliothek kein UITableViewHeaderFooterView
gibt, gibt es keine Möglichkeit, das contentView
korrekt zu laden. Offenbar haben sie es in iOS10 behoben, indem sie eine leere contentView
instanziiert haben. Schade, sie haben auch nicht UITableViewHeaderFooterView
zur Bibliothek hinzugefügt.
Tags und Links uitableview ios xcode swift ios10