web-dev-qa-db-fra.com

UIScrollview obtenant des événements tactiles

Comment détecter les points de contact dans mon UIScrollView? Les méthodes de délégation des touches ne fonctionnent pas.

69
user559005

Configurer un outil de reconnaissance des mouvements tactiles:

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(singleTapGestureCaptured:)];
[scrollView addGestureRecognizer:singleTap];    

et vous obtiendrez les touches dans:

- (void)singleTapGestureCaptured:(UITapGestureRecognizer *)gesture
{ 
    CGPoint touchPoint=[gesture locationInView:scrollView];
}
180
Suresh.D

Vous pouvez créer votre propre sous-classe UIScrollview, puis vous pouvez implémenter les éléments suivants:

- (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];
}
6
Vicky

Si nous parlons des points à l'intérieur de la vue de défilement, vous pouvez accrocher avec la méthode déléguée:

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

et à l'intérieur de la méthode, lisez la propriété:

@property(nonatomic) CGPoint contentOffset

à partir de scrollView pour obtenir la coordination.

1
Nevin