wie kann ich unterscheiden, welcher Teil von UITableViewCell geklickt wurde
Habe ich eine UITableView
mit einem benutzerdefinierten UITableViewCell
. Meine Zelle enthält einen UIImageView
auf der linken Seite und UITextView
auf der rechten Seite.
Innen UITableViewController
ich sowohl Bild und text in tableview cellForRowAtIndexPath
.
Alles zeigt gut, aber jetzt muss ich implementieren didSelectRowAtIndex
und ich muss unterschieden werden, ob UIImageView
oder UITextView
von der Zelle, die angeklickt wurde.
Sagen wir mal, auf Bild klicken für Aktion löschen und den rest der Zelle Bearbeiten Aktion.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Eher, als die Geste recognisers auf jede einzelne Zelle, Sie können hinzufügen, um die Tabelle anzuzeigen und zu bestimmen, welche Zelle ausgewählt wurde aus der Sicht der Benutzer berühren, und dann bestimmen, wenn der Benutzer berührt das Bild oder die Zelle.
Zunächst sicherstellen, dass Ihr controller nimmt die UIGestureRecognizerDelegate Protokoll.
Dann fügen Sie die
UIGestureRecognizer
zu denUITableView
wenn die Ansicht geladen.Dieser Delegat-Methode bestimmt, ob die
handleTap:
Methode ausgeführt werden soll. Wenn Sie es finden können, einindexPath
aus der Benutzer berühren, dann zurückYES
ansonsten gibt esNO
.Sobald wir bestimmt haben, wenn der Benutzer geklickt hat, in einer Zelle, die handleTap: - Methode aufgerufen, die dann entscheidet, ob der Benutzer berührt das Bild, oder irgendeinem anderen Teil der Zelle.
UITapGestureRecognizer
setup inviewDidLoad
auch in Xcode UI-layout (aka IB). Sie möchten, ändern Sie den Rückgabetyp derhandleTap:
zuIBAction
.Könnten Sie Unterklasse
UITableViewCell
und überschreibentouchesEnded
.Müssen Sie halten einige Verweis auf Ihre
UIImageView
undUITextView
(Sie sollten wahrscheinlich werden die Eigenschaften der Zelle).Können Sie natürlich überschreiben
touchesBegan
statttouchesEnded
, hängt davon ab, welche Funktionalität du erreichen möchtest.sehr Abstrakt und allgemein beantwortet, ist Folgendes zu tun
Für jede UIImage und UILabel fügen Sie Ihre Tags an die
indexPath.row
Dann fügen Sie eine UITapGestureRecognizer auf das jeweilige Bild und label, wie so
Damit das Bild ein UIButton. Wenn die Schaltfläche die Aktion ausgelöst wird, wissen Sie, der Benutzer tippte auf die Bild (Zelle NICHT angewählt werden). Wenn Zelle ausgewählt, Sie wissen, die Benutzer erschlossen irgendwo anders auf die Zeile (einschließlich der text-Ansicht oder label).
Auch, legen Sie die Schaltfläche tag-Eigenschaft möglich, z.B. der Zelle-Zeile-index, damit Sie wissen, welche Zeile das Bild wurde abgehört.
haben Sie zwei Möglichkeit ist die Umsetzung :-
1--add UITapGestureRecognizer in Ihrem "uitableviewcell" und stellen Sie Punkt-zu-Bild-Ansicht
und pass "indexpath" als parameter-Wahlschalter und stellen Sie den Delegaten übergeben es an tableviewcell
2 - der Zweite Weg ist, prüfen Sie den Absender der DidSelectRowAtIndexPath des Typs [Bildansicht oder label];
aber ich bevorzuge die erste Möglichkeit, die