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:
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!
Ü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.
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.
Tags und Links ipad cocoa-touch uiview uigesturerecognizer