2010-04-16 5 views
13

J'ai un UIScrollView contenu dans un UIView personnalisé avec une taille de contenu plus grande que le cadre de ScrollView.UIScrollView ne rebondit pas

Je suis capable de faire défiler comme je le souhaite, mais cela ne me donne pas l'effet de bande élastique que vous obtenez avec UITableView ou UIWebView. Cela s'arrête juste quand vous arrivez à l'un des extrêmes.

J'ai mis bounce = YES, y at-il autre chose que je suis supposé faire? J'ai lu les documents, et ils disent que je dois implémenter le délégué. Je l'ai fait. Ils disent aussi que je devrais changer les niveaux de zoom, mais je ne veux pas que l'utilisateur puisse réellement zoomer, donc je ne les ai pas réglés.

Répondre

44

Pour toute personne qui trouve ce fil plus tard, si vous le sous-classement UIView et re-fixer le cadre de » UIScrollView sur tous les layoutSubviews, qui est le problème - il annule le rebond:

http://openradar.appspot.com/8045239

Vous devrait faire quelque chose de similaire à ceci:

- (void)layoutSubviews; 
{ 
    [super layoutSubviews]; 

    CGRect frame = [self calculateScrollViewFrame]; 
    if (!CGRectEqualToRect(frame, self.scrollView.frame)) 
     self.scrollView.frame = frame; 
} 
+0

Vous êtes l'homme – wbarksdale

+0

Des heures gaspillées d'efforts mal dirigés suspecter cela. Je vous remercie! – aehlke

0

C'est intéressant ... Y a-t-il beaucoup de choses pendant que l'utilisateur fait défiler la vue défilée? Peut-être que cela pourrait causer le problème. L'iPhone peut effectuer plusieurs tâches, mais pas trop. Puis-je voir votre code entier en rapport avec la vue déroulante?

+0

Rien d'intéressant du tout! Il y a juste une vue de défilement avec un grand UIView ajouté comme une sous-vue dont le cadre est la même taille que la taille du contenu de la vue défilante. La sous-vue a un groupe d'UIViews personnalisés en tant qu'enfants. –

3

Il s'avère que le maintien de UIScrollView dans mon UIView personnalisé causait le problème.

Une fois que j'ai changé mon UIView personnalisé pour hériter à la place de UIScrollView, alors le rebond a commencé à fonctionner.

+0

Voici ce qui se passait: http://openradar.appspot.com/8045239 – leolobato

+0

J'ai ce problème avec UIScrollViews imbriqué. J'ai vérifié que les frames des sous-vues ne sont pas modifiées inutilement lorsque j'appelle layoutSubviews comme états de liens openradar et que j'utilise aussi une sous-classe UIScrollView pour le scrollView interne qui ne rebondit pas – Pacu

26

J'ai eu le même problème, sur un UIScrollView qui n'a pas été tout rempli (mais je voulais encore à rebondir). Juste setted:

scroll.alwaysBounceVertical/Horizontal = YES; 

Et cela a fonctionné comme prévu

+0

Très utile lorsque vous avez un contrôle d'actualisation sur la vue défilement, mais ne contient pas assez de rebond (ce qui empêche le contrôle d'actualisation de fonctionner). – DMan

Questions connexes