6
votes

UiscrollView Détection Pinch Zoom

J'essaie de vous faire avertir lorsque Uiscrollview est PINCH ZOOMED au-delà de sa limite de zoom minimum et est sur le point d'animer, mais je le trouve très difficile. Existe-t-il une façon de faire cela avec délégué seul ou dois-je remplacer UISCrollView's's TACTULLING?


0 commentaires

4 Réponses :


2
votes

Vous pouvez utiliser l'UISCrollView's ScrollViewDidzoom Méthode de déléguée pour détecter le moment où il est sur le point d'animer. Vous verrez scrollview.zoomscale Drop ci-dessous Scrollview.minimumzoomZale tandis que la vue est en cours de pincée. Ensuite, dès que l'utilisateur libère leurs doigts, ScrollViefDidzoom sera appelé à nouveau avec ScrollView.zoomscale == ScrollView.minimumzoomZale , mais ScrollView.zooming == Non .

Capturer ce moment est bon et tout, mais essayant de faire quoi que ce soit pour préempter l'animation de rebond-to-minimum-to-minimum semble avoir des effets secondaires vraiment étranges pour moi. : (


1 commentaires

Et si je veux capturer un zoomscale autre que minimumzoomscale, comme si! ScrollView.zooming && ScrollView.zoomscale <0.6 {faire quelque chose}



0
votes

Je l'ai fait avec uipinchgesurerecognizer . xxx


0 commentaires

11
votes

Utiliser ScrollViefDidLZoom: Cochez> et vérifiez si ScrollView.zoombouncing == Oui code>. Ensuite, utilisez zoomscale code> pour déterminer quelle direction la vue rebondissait.

- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
    if (scrollView.zoomBouncing) {
        if (scrollView.zoomScale == scrollView.maximumZoomScale) {
            NSLog(@"Bouncing back from maximum zoom");
        }
        else
        if (scrollView.zoomScale == scrollView.minimumZoomScale) {
            NSLog(@"Bouncing back from minimum zoom");
        }
    }
}


0 commentaires

2
votes

à Swift 4.0: xxx

Ce sera appelé exactement lorsque l'utilisateur a fini de zoom et que le zoomscale est à sa valeur minimale possible, c'est-à-dire lorsque le défilement La vue est zoomée complètement.


5 commentaires

Comment puis-je détecter l'utilisateur pincer pour effectuer un zoom arrière, s'ils ne font pas zoomer tout le chemin?


@Daniel Springer que l'attribut ZoomCale a toutes les informations dont vous avez besoin. Cela diminuera à mesure qu'ils font zoomer, alors vérifiez si le zoomcale a diminué sans aller tout le chemin (c'est-à-dire au minimumzoomcale). Si vous avez toujours des problèmes posez la question et liez-le ici, je peux partager un exemple de cela.


Afin de vérifier si cela a diminué, vous devez économiser la valeur précédente à une variable de mienne?


Oui, exactement. Il n'y a rien d'intégré à la vision de ScrollView qui fait cela pour vous, vous souhaitez donc la suivre avec votre propre variable.


J'ai compris. Merci!