2010-01-22 3 views
4

Je pense avoir trouvé un bug dans UIScrollView, mais je veux vérifier si d'autres personnes observent la même chose et si le comportement est attendu.zoomToRect ne fait rien si votre UIScrollView est déjà à ce niveau de zoom

J'ai un UIScrollView et j'essaie de définir ce qu'il regarde en utilisant zoomToRect. Cela fonctionne bien. Si je fais alors glisser la vue pour qu'elle regarde ailleurs et déclenche le zoomToRect avec les mêmes valeurs, elle ne fait rien. La commande zoomToRect ne fait que quelque chose si le zoomScale doit être ajusté, si un panoramique est tout ce qui est nécessaire, la vue reste immobile. Comme un utilisateur pouvait pincer pour zoomer ou dézoomer, j'espérais simplement utiliser zoomToRect et ne pas avoir à vérifier que les zoomLevels seraient différents.

Quelqu'un d'autre a-t-il déjà vécu cela? Est-ce que ça devrait arriver ou est-ce un bug?

*** Ajout de code tel que demandé

premier appel à zoomToRect

[myScrollView zoomToRect:zoomToRect animated:YES]; 

Voir visant correctement au point dans le UIScrollView que je voulais que ce soit

Maintenant l'utilisateur de faire glisser sur l'écran et déplacez le point que UIScrollView regarde. Aucun zoom n'a lieu, uniquement le panoramique.

Appelez dès maintenant zoomToRect à nouveau, avec le même rect

[myScrollView zoomToRect:zoomToRect animated:YES]; 

Rien ne se passe.

+0

Peut-être que vous pouvez publier des extraits de code pertinents. –

Répondre

3

Apple a dit que c'est un bug connu avec UIScrollView et qu'il sera corrigé dans une future version.

https://devforums.apple.com/message/158712#158712

Dans le même temps j'ai travaillé autour de cela comme suit

float zoomBefore = myScrollView.zoomScale; 
[myScrollView zoomToRect:zoomToRect animated:YES]; 
float zoomAfter = myScrollView.zoomScale; 
if (zoomBefore == zoomAfter) 
{ 
    [myScrollView setContentOffset:imageCoords animated:YES]; 
} 
-2

Par défaut maximumZoomScale est 1.0. Donc, il ne fait pas de zoom lorsque l'on double-clique. mis maximumZoomScale comme ceci:

myScrollView.maximumZoomScale = 5.0f; 
+0

Bien que cela puisse être vrai, ce n'est pas lié à cette question. – Craig

Questions connexes