iOS UIPanGestureRecognizer


Exemple

Les détecteurs de mouvements de panoramique détectent les mouvements de déplacement. L'exemple suivant ajoute une image à un contrôleur de vue et permet à l'utilisateur de la faire glisser sur l'écran.

Objectif c

- (void)viewDidLoad {
    [super viewDidLoad];
    
    UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"imageToDrag"]];
    [imageView sizeToFit];
    imageView.userInteractionEnabled = YES;
    [self.view addSubview:imageView];
    
    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
    [imageView addGestureRecognizer:pan];
}

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {
    CGPoint translation = [recognizer translationInView:self.view];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                         recognizer.view.center.y + translation.y);
    [recognizer setTranslation:CGPointZero inView:self.view];
}

Rapide

override func viewDidLoad() {
    super.viewDidLoad()
    
    let imageView = UIImageView.init(image: UIImage.init(named: "imageToDrag"))
    imageView.sizeToFit()
    imageView.isUserInteractionEnabled = true
    self.view.addSubview(imageView)
    
    let pan = UIPanGestureRecognizer.init(target: self, action: #selector(handlePan(recognizer:)))
    imageView.addGestureRecognizer(pan)
}

func handlePan(recognizer: UIPanGestureRecognizer) {
    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x: view.center.x + translation.x, y: view.center.y + translation.y)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)
}

Remarque: Bien que UIPanGestureRecognizer soit utile pour détecter les UIPanGestureRecognizer de glissement, si vous souhaitez simplement détecter un geste de base tel que faire glisser un doigt de gauche à droite ou de haut en bas, utilisez UISwipeGestureRecognizer . UIPanGestureRecognizer est un meilleur choix si vous avez besoin d'accéder à des méthodes telles que translationInView: ou velocityInView: UIPanGestureRecognizer