Wie kann ich Berührungspunkte in meinem erkennen UIScrollView
? Die Methoden zum Delegieren von Berührungen funktionieren nicht.
71
Wie kann ich Berührungspunkte in meinem erkennen UIScrollView
? Die Methoden zum Delegieren von Berührungen funktionieren nicht.
Richten Sie eine Tippgestenerkennung ein:
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap];
und Sie werden die Berührungen bekommen in:
- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{
CGPoint touchPoint=[gesture locationInView:scrollView];
}
Sie können Ihre eigene UIScrollview-Unterklasse erstellen und anschließend Folgendes implementieren:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"DEBUG: Touches began" ); UITouch *touch = [[event allTouches] anyObject]; [super touchesBegan:touches withEvent:event]; } - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"DEBUG: Touches cancelled"); // Will be called if something happens - like the phone rings UITouch *touch = [[event allTouches] anyObject]; [super touchesCancelled:touches withEvent:event]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"DEBUG: Touches moved" ); UITouch *touch = [[event allTouches] anyObject]; [super touchesMoved:touches withEvent:event]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { NSLog(@"DEBUG: Touches ending" ); //Get all the touches. NSSet *allTouches = [event allTouches]; //Number of touches on the screen switch ([allTouches count]) { case 1: { //Get the first touch. UITouch *touch = [[allTouches allObjects] objectAtIndex:0]; switch([touch tapCount]) { case 1://Single tap break; case 2://Double tap. break; } } break; } [super touchesEnded:touches withEvent:event]; }
quelle
Wenn wir über die Punkte in der Bildlaufansicht sprechen, können Sie die Delegate-Methode verwenden:
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
und lesen Sie innerhalb der Methode die Eigenschaft:
@property(nonatomic) CGPoint contentOffset
aus der scrollView, um die Koordination zu erhalten.
quelle
Dies funktioniert auch bei Touchdown-Ereignissen.
In der aktuell als korrekt markierten Antwort erhalten Sie eine
touch point
nur bei einem "Tap" -Ereignis. Dieses Ereignis scheint nur auf "Finger hoch" und nicht auf "unten" zu feuern.Aus dem Kommentar von yuf in der gleichen Antwort können Sie die
touch point
aus der zugrunde liegenden Ansicht auch innerhalb der erhaltenUIScrollView
.- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch { CGPoint touchPoint = [touch locationInView:self.view]; return TRUE; // since we're only interested in the touchPoint }
Laut Apples Dokumentation der
gestureRecognizer
tut:was für mich bedeutet, dass ich entscheiden kann, ob a
gestureRecognizer
eine Berührung erhalten soll oder nicht.quelle