UITableView muss lange gedrückt werden, um eine Zeile auszuwählen

7

Irgendjemand ist jemals auf das Problem gestoßen, dass UITableView lange drücken muss, um die Methode didSelectRowAtIndexPath auszulösen?

    
keywind 14.11.2013, 06:09
quelle

4 Antworten

20

Wenn Sie eine Gestenerkennung verwendet haben, versuchen Sie, sie zu entfernen, und prüfen Sie, ob das Problem verursacht wurde oder nicht?

Andere weise

Nicht sicher aber Das Problem könnte in UITableView has delaysContentTouches aktiviert sein ON . Schalten Sie dieses AUS aus, damit Berührungen schneller zu den Zellen gelangen.

    
iPatel 14.11.2013, 06:21
quelle
2

Ich hatte genau die gleichen Probleme:

  • Ich habe den Tap Gesture Recognizer verwendet, um verschiedene Aktionen in meinem View Controller zu verwalten
  • Ich wollte einen klassischen Tap (kurzer Klick), um die didSelectRowAtIndexPath-Methode auszulösen, aber nur ein langer Druck, der standardmäßig funktioniert

Meine Lösung zum Auswählen einer Zelle in der Tabellenansicht durch kurzes Antippen (drücken):

  • Wählen Sie Ihre Tap-Gestenerkennung in Ihrem Storyboard
  • aus
  • Gehen Sie zum Attributinspektor und deaktivieren Sie "In Ansicht abgebrochen"
GéraldT 20.03.2014 13:18
quelle
1

In meiner Situation hatte ich einen UITapGestureRecognizer in meiner Ansicht zum Ausblenden meiner Tastatur.

Das hat das Problem gelöst:

%Vor%     
Dan Beaulieu 11.06.2016 16:06
quelle
0

Sie müssen UILongPressGesture zur Ansicht Ihrer Zelle hinzufügen und in Brand setzen Sie einfach didSelectRowAtIndexPath (besser wird es sein, eine andere Methode aufzurufen - nicht die Standardmethode von UITableViewDelegate) von Ihrer Klasse, die UITableViewDelegate annimmt.

Ich schlage vor, Sie erstellen ein eigenes Protokoll, von UITableViewDelegate geerbt, fügen Sie dort Methode für lange Presse Verhaltensmethode und genießen. Ähnliches wie:

%Vor%

Ihr Delegierter würde in diesem Fall nicht den Standard UITableViewDelegate übernehmen, sondern diesen. Außerdem müssen Sie eine eigene Zelle erstellen (von UITableViewCell geerbt) und dort eine Delegate-Eigenschaft (ID) hinzufügen, die beim langen Drücken von gefeuert verwendet wird.

Es kann auch vorkommen, dass der Standard didSelectRowAtIndexPath ausgelöst wird, bevor Sie lange drücken, also schlage ich vor, das Standardauswahlverhalten für die Tabellenansicht zu deaktivieren:

%Vor%     
in.disee 14.11.2013 06:19
quelle