J'ai utilisé UIScrollView
avant, et je l'utilise maintenant, et je n'ai jamais eu de problème. Je l'ajoute maintenant à une ancienne application et, bien qu'il fonctionne comme prévu (je peux regarder le contenu, le faire défiler avec mon doigt, toutes les limites et les tailles sont bien configurées de sorte qu'il n'y a pas d'espace vide dans le contenu, etc. scrollToRectVisible
pour fonctionner. J'ai même simplifié l'appel pour qu'il se déplace simplement à la position 0,0 :
[scrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:YES];
ou le déplacer à 0,200 :
[scrollView scrollRectToVisible:CGRectMake(0, 200, 10, 10) animated:YES];
J'ai même créé une application rapide pour tester cela et je peux obtenir scrollRectToVisible
pour y fonctionner comme je l'espère. Mais dans mon ancienne application, je n'arrive pas à lui faire faire quoi que ce soit.
Je peux faire défiler le scrollView avec setContentOffset:
mais ce n'est pas ce que je veux.
Cette scrollView et son contenu sont définis dans la nib par IB et utilisés avec une IBOutlet. Le seul code que j'utilise dans mon application pour gérer le scrollView est le suivant
[scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, imageView.frame.size.height)];
(Je ne suis intéressé que par le défilement vertical, pas horizontal).
Quelqu'un a-t-il rencontré un tel problème ?
J'ai comparé les attributs de scrollView dans les deux applications et ils sont identiques.
ADDENDUM :
Mon cadre scrollViews est : 0.000000 0.000000 480.000000 179.000000
Mon scrollViews contentSize est : 0.000000 324.000000
Il agit toujours comme si le rectangle vers lequel je veux défiler était déjà visible et qu'aucun défilement n'était nécessaire. Je ne suis pas sûr que ce soit ce qui se passe. C'est tout simplement la chose la plus étrange. Cela semble si facile à résoudre...
ADDENDUM #2 :
C'est comme ça que je me débrouille sans scrollRectToVisible
:
CGPoint point = myRect.origin;
if (![clefScrollView pointInside:point withEvent:nil]) {
point.x = 0;
if (point.y > clefScrollView.contentSize.height - clefScrollView.bounds.size.height)
point.y = clefScrollView.contentSize.height - clefScrollView.bounds.size.height;
[clefScrollView setContentOffset:point animated: YES];
}
Tout le reste de ce scrollView fonctionne comme prévu, mais scrollRectToVisible
. POURQUOI ? !? Des suppositions sauvages ?