kann nicht auf UIButton in einer Zelle in UITableview klicken

7

hat schon einige mögliche Korrekturen durchsucht, aber alle haben meine nicht gelöst.

Ich klicke weiterhin auf die Zelle in der uitableview anstatt auf die Schaltflächen darin.

hier ist mein Code:

%Vor%

Ich habe auch versucht% cco_de% für die Tasten und immer noch nicht funktioniert.

Danke.

    
Long Neutrals 18.09.2013, 07:39
quelle

9 Antworten

21

Ich bin nur verwirrt von dieser Frage ....

Ich habe es geschafft, dieses Problem in einem Projekt zu beheben:

%Vor%

Aber das gleiche hat nicht für ein anderes Projekt funktioniert. Ich habe keine Ahnung warum ...

    
Mateusz266 30.01.2016 17:52
quelle
18

Es gibt noch eine andere mögliche Ursache für Probleme wie diese, und das ist UITableViewCells hat jetzt eine contentView . Dies kann und wird vor anderen Ansichten in Ihren benutzerdefinierten Tabellenansichtszellen platziert, um Berührungen zu erkennen und die Zellenauswahl zu erkennen. Auf diese Weise können Berührungen von Ansichten dahinter blockiert werden. Ich habe diesen Ärger besonders bemerkt, als ich Zellen mit Nibs erstellte.

Das akzeptierte Mittel dafür ist sicherzustellen, dass alle Untersichten nicht zur Tabellenansichtszelle selbst, sondern zu ihrer contentView hinzugefügt werden. Dies ist eine schreibgeschützte Eigenschaft, die unter bestimmten Umständen ihren eigenen Rahmen anpasst, z. B. wenn sie seitlich verschoben wird, um die Löschschaltfläche anzuzeigen, oder während des Bearbeitungsmodus. Sie sollten daher sicherstellen, dass alle Elemente, die Sie zu contentView hinzufügen, intelligent skaliert sind und das richtige Größenänderungsverhalten aufweisen.

Beachten Sie auch, dass Sie durch das Hinzufügen von Zellen zu contentView selbst Berührungen blockieren und so verhindern können, dass die Zelle ausgewählt wird. Ich persönlich versuche, die Zellenauswahl in Tabellenansichten nicht zuzulassen, die Zellen mit benutzerdefinierten benutzeraktivierten Steuerelementen enthalten. Es führt nur zu Verwirrung und unbeholfenen Schnittstellen. Tatsächlich denke ich ernsthaft darüber nach, alle UITableViews in meinen zukünftigen Projekten durch UICollectionViews zu ersetzen, die viel anpassungsfähiger sind.

-Ash

    
Ash 30.12.2013 20:39
quelle
4

Der y-Versatz von UIButton = wird als 160 angegeben, und UIView's height wird nur als 120 angegeben. Bitte ändern Sie den UIButton's y-Versatz und versuchen Sie es.

    
HRM 18.09.2013 08:56
quelle
4

Für Swift 3 und Storyboard

Für mich musste ich mehrere Berührungspunkte in der Inhaltsansicht aktivieren und die Benutzerinteraktion für alles aktivieren - für die Tabellenansicht, die Tabellenansichtszelle, die Inhaltsansicht und die UIB-Taste. Ich habe ein Storyboard verwendet.

Ich habe auch meine Tableview-Zelle als Unterklasse eingerichtet.

Da ich hier keine Antwort finden konnte, als ich das Problem erkundete, habe ich eine weitere Frage zum Stapelüberlauf gestellt. Sie können meinen Code sehen und ein Projekt herunterladen, indem Sie hier arbeiten: Kann ich nicht auf die Schaltfläche in UITableViewCell klicken?

    
Nick 05.04.2017 16:14
quelle
3

Die UITableViewCell behandelt standardmäßig alle Gesten. Setzen Sie cell.selectionStyle = UITableViewCellSelectionStyleNone; , um das Standardverhalten zu deaktivieren.

    
Rickye 18.09.2013 07:47
quelle
2

Ich bin auf dieses Problem gestoßen, aber in meinem Fall hatte es nichts mit der Tabellenansicht zu tun, sondern weil ich Subviews in meiner Schaltfläche verwendet habe, für die userInteractionEnabled wahr war, indem ich diesen Wert für false (NO) festlegte Alle Unteransichten der Schaltfläche haben das Problem für mich behoben.

    
ThomasW 14.04.2016 09:41
quelle
0

Erstellen Sie eine benutzerdefinierte UITableViewCell. Siehe diesen Link .

Angenommen, Sie haben UIButton mit dem Namen displayButton, können Sie Folgendes tun:

In Ihrem - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath , nachdem Sie Ihre Zelle erstellt haben,

%Vor%

Und erstellen Sie die Methode wie in Ihrem ViewController:

%Vor%     
Anil 18.09.2013 07:49
quelle
0

Ich habe das gleiche Problem, und irgendwie habe ich meinen Fehler herausgefunden Nachdem ich die constraints mit self(UITableViewCell) auf constraints mit contentView von self(UITableViewCell) geändert habe, ist der Knopf meiner Zelle wieder anklickbar.

    
wj2061 18.10.2017 09:43
quelle
0

Ich habe das gemacht:

%Vor%

Und es scheint, dass das Aufrufen der addTarget-Methode innerhalb der Schließung nicht funktioniert hat. Wenn ich die addTarget-Methode faktorisiert und stattdessen in den Initialisierer eingefügt habe, hat alles funktioniert!

    
Lord Fresh 27.12.2017 23:31
quelle