2015-07-28 11 views
12

Ich habe eine benutzerdefinierte UITableViewCell namens "SwitchCell", die einen Schalter hat. In iOS9 Only, mit Xcode 7 Beta, befindet sich die Inhaltsansicht in der Zelle über dem Schalter. (Siehe Screenshot anzeigen Hierarchie Sie können deutlich sehen, dass der Inhalt Ansicht der Zelle auf der anderen Ansichten ist..): enter image description hereiOS9 - UITableViewCellContentView verdeckt Kontrollen in Zelle

Also alle berührt, um den UISwitch abgefangen, und die IBAction nicht ausgelöst . In iOS8 ist dies kein Problem. Siehe Screenshot für iOS 8.4 Simulator. Sie können sehen, dass es keine Inhaltsansicht über den Kontrollen gibt: enter image description here

Hat jemand dieses Problem gehabt? Ich habe versucht, die NIB von Grund auf neu zu erstellen, aber das gleiche Ergebnis tritt auf.

Meine NIB ist eine Freiformgröße mit keiner Statusleiste. Es hat zwei Ausgänge: einen für UILabel, einen für UISwitch.

BEARBEITEN: Bitte stellen Sie sicher, dass Sie die folgende Antwort überprüfen, um sicherzustellen, dass die Stammansicht der Zelle nicht nur eine UIView, sondern eine UITableViewCell ist. Dieses Problem kann auch eine Nebenwirkung davon sein.

Antwort

11

Nach mehr Untersuchung und Suchen fand ich meine Lösung hier: Button in UITableViewCell not responding under ios 7

Was es für mich gerichtet war: cell.contentView.userInteractionEnabled = NO;

Dies verhindert, dass die Zellinhaltsansicht die Berührungsereignisse übernimmt, obwohl sie über den anderen Ansichten liegt.

Dieses Problem trat nicht nur auf iOS9, sondern auch auf iOS7 auf. In iOS8 befand sich die Inhaltsansicht hinter den Steuerelementen.

+3

Es funktioniert hier auf iOS 9.1 Entwicklervorschau. Wie auch immer, es macht überhaupt keinen Sinn, die contentView THE PARENT VIEW ON THE HIERARCHY, sollte nicht auf den anderen Ansichten sein. – edulpn

+0

Ich hatte den gleichen Effekt mit Xcode 7.1.1. Ich frage mich, warum die UITableViewCellContentView über allem in dieser Zelle steht. – snoersnoer

2

Problem kann in .xib-Datei für Ihre Zelle sein. Achten Sie beim Erstellen einer Zelle in einer separaten .xib darauf, dass Sie UITableViewCell auf Leinwand ziehen, nicht UIView.

1

Ich hatte dieses Problem, wenn ich eine Zelle als .xib wiederverwendete. Ich habe nicht realisiert, aber als ich das Xib zum ersten Mal erstellte, war die Standardansicht, die es erstellte, tatsächlich eine UIView und keine UITableViewCell. Es scheint, dass UIKit zu irgendeinem Zeitpunkt die Inhaltsansicht über meine anderen Elemente hinzufügt und daher bestimmte Ereignisse (z. B. Berührungsereignisse) unterbricht.

Ich löste dies, indem ich meine XIB-Datei öffne und eine UITableViewCell auf die Leinwand und kopiere meine UI-Elemente von der alten Ansicht in die neue Zelle.

Danach wurden zusätzliche Einstellungen im Attribut-Inspector verfügbar, die denen für eine UITableViewCell entsprachen.