0

Ich möchte einzelne und doppelte Taps in meinen Tabellensichtzellen akzeptieren. Ich habe auch tappable Etiketten mit Hashtags in jeder meiner Zellen, die ich klickbar bleiben möchte. Das ist eine Interaktion, die separat und anders ist, als wenn ein Benutzer auf einen anderen Ort als einen Hashtag klickt.Akzeptieren von Doppel- und Einzeltippen in Tabellenansichtszellen, die ein tappbares Label enthalten

Mir ist aufgefallen, dass je nachdem, wie ich meine Frage oder Google meine Frage bekomme ich 2 verschiedene Antworten.

Lösung A: UITapGestureRecognizer - single tap and double tap Die akzeptierte Antwort suggeriert 2 Tippgeste Erkenner mit Verzögerungen und hat eine hohe Anzahl von upvotes.

Lösung B Die andere Lösung I auf mehreren Threads gesehen habe, ist ein Zähler in tap tableView:didSelectRowAtIndexPath: kombiniert mit einem kurzen Zeitgeber zu implementieren. Es gibt eine Menge dieser Threads mit dieser als die akzeptierte Antwort, aber keine von ihnen haben fast so viele Upvotes wie die Antwort von Lösung A.

Gibt es Argumente dafür, warum man besser ist als die andere?

Das Problem hier mit beiden Lösungen ist, dass Gesten meine zugeschrieben Etiketten Taps und die ...didSelectRow... Lösung verhindert, dass Benutzer Klopfen mehrere Zellen Schnellfeuer ohne Probleme aufzusaugen; es ist schlampig und lässt Raum für Fehler.

+0

Haben Sie auch nur ein Wort von dem gelesen, was ich geschrieben habe? Ich habe diesen EXAKTEN Thread und die vielen Variationen in meiner Frage buchstäblich erwähnt. – ChuckKelly

+0

Das Problem hier mit BEIDE Lösungen ist, dass Gesten saugen meine zugeschriebenen Etiketten #hashtag Klicks und die Didselectrow Lösung verhindert, dass Benutzer mehrere Status Schnellfeuer ohne Probleme zu mögen/ist schlampig Blätter Platz für Fehler. Das zu schließen wäre grenzwertig unverantwortlich und ein Machtmissbrauch. Es ist eine gut durchdachte Frage und ein echtes Problem. – ChuckKelly

Antwort

0

können Sie 2 Gesten haben.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClikOneTap:)]; 
tapGesture.numberOfTapsRequired = 1; 

UND

UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onClikDoubleTap:)]; 
doubleTapGesture.numberOfTapsRequired = 2; 

Mit magischen Linie für die Steuerung

[tapGesture requireGestureRecognizerToFail:doubleTapGesture]; 

Dies hat bei vielen Gelegenheiten sehr gut für mich gearbeitet.

+0

Bitte lesen Sie erneut Kommentare, diese Lösung verhindert Klicks auf attributierte Labels Links – ChuckKelly

+0

Ich denke, wenn wir eine Ansicht innerhalb jeder Zelle mit der gleichen Größe der Zelle hinzufügen und die Geste zu dieser Ansicht geben, kann es wahrscheinlich funktionieren – jose920405