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.
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? –
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. –