2014-03-06 7 views
5

Ich habe eine App mit ziemlich komplexen UI, gibt es eine große UIView genannt das Cover mit einem UITableView darunter. Die tableView ist mit einer tableHeaderView auf der gleichen Höhe wie die Abdeckung konfiguriert. Während die tableView nach oben scrollt, bewegt sich die Abdeckung mit Hilfe einer UIScrollViewDelegate auf den Bildschirm (mit verschiedenen ausgefallenen Animationen). Um Benutzern zu ermöglichen, die tableView durch Streichen der Abdeckung zu scrollen, habe ich die - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event Methode überschrieben, um immer false zurückzukehren.iOS - Sehen Sie, dass Handle taps, aber lassen Sie Swipes gehen, um die Superview

Ich habe jetzt einige UIButton Ansichten auf dem Cover hinzugefügt. Ich habe es geschafft, um sie durch eine Änderung der Art und Weise zu Taps machen reagiere ich die pointInside Methode wie folgt außer Kraft gesetzt haben:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
BOOL isInside = [_directionsButton pointInside:[_directionsButton convertPoint:point fromView:self] withEvent:event]; 
return isInside; 
} 

Das einzige Problem ist jetzt, dass, wenn Sie eine Streichgeste auf die Schaltfläche Start, es gefangen wird durch Der Knopf und die tableView scrollt nicht. Ich möchte Swipe-Gesten auf der Schaltfläche ignorieren können (lassen Sie sie also wirklich in die Ansicht unten übergehen).

Normalerweise würde ich nur die Abdeckung sehen tableHeaderView, die diese Art von Verhalten wirklich gut zu behandeln scheint. Allerdings kann ich dies hier nicht tun, da einige einzigartige Animationen auf dem Cover gemacht wurden, während der Tisch scrollt.

Antwort

1

Haben Sie versucht, die Gesten mithilfe von Gestenerkennern zu identifizieren und eine Aktionsmethode auszuführen, die aufgerufen werden soll, wenn die angegebene Geste erkannt wird?

Bitte überprüfen Sie diese link. Dies kann Ihnen dabei helfen.

+0

Das ist ein Anfang, aber ich bin wirklich auf der Suche nach einer Lösung, so dass, wenn eine Wischgeste erkannt wird als Start auf einem UIButton gibt es den ganzen Touch zu seinem Superview (die es wiederum zu der Ansicht unten passieren) . Ich bin zuversichtlich, dass ich Swipes auf dem Button erkennen konnte, aber dann, wie man sie ignoriert? –

+0

Wenn Sie diese Swipes verarbeiten, ermitteln Sie, woher der Swipe stammte, und ob dieser Punkt in dem Frame liegt, in dem Sie die UIView hatten. –

Verwandte Themen