2016-03-24 14 views
0

Ich mag würde benutzerdefinierte Ansichten platzieren (von nib erstellt) innerhalb UITableViewCell s. Dies funktioniert ohne Probleme, es sei denn, die benutzerdefinierte Ansicht deklariert eine eigene einzelne Berührung UIPanrecognizer. In diesen Fällen reagiert meine benutzerdefinierte Ansicht auf die Schwenkereignisse. Dadurch wird jedoch die Möglichkeit, die Zellen in der Tabellenansicht zu scrollen, praktisch deaktiviert. Ich habe versucht, den UIPanRecognizer sowohl mit der Zelle als auch mit der benutzerdefinierten Ansicht zu registrieren, aber diese Fähigkeit scheint seit IOS 9 nicht mehr erlaubt zu sein (scheint auch nicht so zu sein, wie Apple Berührungsereignisse behandeln will, ich las irgendwo, dass Berührungsereignisse sollten nur durch einen Blick behandelt werden)Benutzerdefinierte Ansichten mit UIPanrecognizer unintendetly Schlösser UITableViewController

ich auch einen Weg finden, fehlgeschlagen programmatisch die Tabellen-Ansicht scrollen, die auch ein wenig hacky scheinen würden.

Was sind meine Optionen, wenn es um zu wollen kommt die Pfanne Verhalten des UITableView zu bewahren, während noch in der Lage zu sein in meiner benutzerdefinierten Ansicht zu einem pan-Ereignisse zu reagieren?

Mein Anwendungsfall ist wie folgt: Ich möchte eine benutzerdefinierte Ansicht wieder zu verwenden, die können seitwärts bewegen, dass ich für einen anderen Teil meiner App erstellt. Meine Tabellenansicht ist so eingestellt, dass sie nur auf nach unten gerichtete Schwenks reagiert. Daher stören die beiden Schwenkaktionen nicht.

Zwei Möglichkeiten habe ich derzeit gelöst: Die Seitliche Schriftrolle reagiert auf Zweifinger-Pfannen. Das ist super peinlich und nicht intuitiv.

Alle Gesten in der benutzerdefinierten Ansicht (außer Taps) werden an die Superview gesendet. Wenn Sie auf die benutzerdefinierte Ansicht tippen, wird die Umleitung deaktiviert, wodurch die Tabellenansicht gesperrt und ein seitliches Scrollen ermöglicht wird, indem die benutzerdefinierte Ansicht auf die seitliche Schwenkung reagiert. Ein weiterer Tap stellt das ursprüngliche Verhalten wieder her. Dies ist umständlich, da es den Benutzer auffordert, drei separate Aktionen für etwas auszuführen, das nur eins sein sollte.

Ich weiß, dass ich seitlich Panning für Tabellenansichten ermöglichen kann, aber das löst nicht mein Problem zu wollen, meine benutzerdefinierte Ansicht in der Zelle wiederverwenden.

Kennt jemand eine Lösung für dieses Dilemma?

Antwort

0

Die Lösung war eine benutzerdefinierte UIGestureRecognizer zu erstellen.

Ich folgte this tutorial, erstellt eine benutzerdefinierte SidewaysPanGestureRecognizer, dass statt registriert und hat alle Gesten aber SidewaysPanGestureRecognizer zum Superview durch die UIGestureRecognizerDelegate Methode verantwortlich Umsetzung für die Entscheidung, ob die Ansicht, die die Geste behandeln soll:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, 
    shouldReceiveTouch touch: UITouch) -> Bool { 
    return gestureRecognizer is SidewaysPanGestureRecognizer 
} 
Verwandte Themen