UIGestureRecognizer blockiert das Scrollen der Tabellenansicht

7

Ich verwende eine benutzerdefinierte UIGestureRecognizer -Unterklasse, um Gesten in meiner InfoView -Klasse zu verfolgen. Die Klasse InfoView ist eine Unteransicht einer benutzerdefinierten UITableViewCell - Unterklasse namens InfoCell .

Ich habe meinen Gestenerkenner zu meiner Stammansicht hinzugefügt (die übergeordnete Ansicht von allem anderen auf dem Bildschirm, weil der Zweck meiner benutzerdefinierten Gestenerkenner darin besteht, das Ziehen von InfoCell Ansichten zwischen Tabellen zu erlauben). Jetzt funktioniert alles wie es sollte außer einer Sache. Ich verwende den folgenden Code in meiner UIGestureRecognizer -Unterklasse, um Berührungen in der InfoView -Ansicht zu erkennen:

%Vor%

Das Problem hierbei ist, dass die Berührungen des Objekts InfoView abgefangen werden und daher nicht an die UITableView weitergeleitet werden, die die InfoCell enthält, die die übergeordnete Ansicht von InfoView ist. Das bedeutet, dass ich nicht mehr durch die Tabellenansicht blättern kann, indem ich auf die InfoView -Ansicht ziehe, was ein Problem ist, da InfoView die gesamte InfoCell abdeckt.

Gibt es eine Möglichkeit, die Berührungen auf die Tabellenansicht zu übertragen, damit sie scrollen kann? Ich habe schon einiges ausprobiert:

[super touchesBegan:touches withEvent:event];

[touchView.superview.superview touchesBegan:touches withEvent:event]; ( touchView.superview.superview erhält eine Referenz auf seine Eltern UITableView )

Aber bisher hat noch nichts funktioniert. Außerdem wird das cancelsTouchesInView propery von meinem UIGestureRecognizer auf NO gesetzt, so dass die Berührungen nicht beeinträchtigt werden.

Hilfe wird geschätzt. Danke!

    
indragie 20.07.2010, 23:35
quelle

4 Antworten

3

Ich hatte eine Zeile in meiner touchesBegan -Methode, die die state -Eigenschaft des Gestenerkenners auf UIGestureRecognizerStateBegan setzt. Das Entfernen dieser Zeile scheint das Problem zu beheben.

    
indragie 21.07.2010, 00:41
quelle
24

Überprüfen Sie die UIGestureRecognizerDelegate-Methode: - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer

Wenn dies YES zurückgibt, wird verhindert, dass Ihr Gestenerkenner auf demjenigen stampft, den UIScrollView zum Scrollen verwendet.

    
Mark Adams 29.10.2010 04:20
quelle
9

UIGestureRecognizer hat eine Eigenschaft "cancelsTouchesInView", die standardmäßig auf YES gesetzt ist. Dies bedeutet, dass Berührungen in einer UIView abgebrochen werden, wenn eine Geste erkannt wird. Versuchen Sie, es auf NEIN zu setzen, damit UIScrollView weitere Berührungsereignisse erhalten kann.

    
Felix 30.07.2010 09:40
quelle
3

Sie können versuchen, diese Benachrichtigung hinzuzufügen

%Vor%     
user2182192 28.08.2013 05:14
quelle