229 votes

Arrêter UIWebView de "rebondir" à la verticale?

Personne ne sait comment arrêter une UIWebView de rebondir à la verticale? Je veux dire que lorsqu'un utilisateur touche leur écran de l'iphone, fait glisser son doigt vers le bas, et la webview montre un espace vide au-dessus de la page web que j'avais chargé?

J'ai regardé la suite de solutions possibles, mais aucun d'eux n'a fonctionné pour moi:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/996-turn-off-scrolling-bounces-uiwebview.html

http://forums.macrumors.com/showthread.php?t=619534

Comment puis-je arrêter un UIScrollView de rebondir à l'horizontale?

429voto

Mirek Rusin Points 5880
for (id subview in webView.subviews)
  if ([[subview class] isSubclassOfClass: [UIScrollView class]])
    ((UIScrollView *)subview).bounces = NO;

...semble bien fonctionner.

Il sera accepté à l'App Store.

Mise à jour: dans iOS 5.x+ il y a un moyen plus facile - UIWebView a scrollView de la propriété, de sorte que votre code peut ressembler à ceci:

webView.scrollView.bounces = NO;

46voto

Brad Parks Points 5513

J'ai été à la recherche à un projet qui permet de créer facilement des applications web comme à part entière, à installer des applications sur l'iPhone appelé QuickConnect, et a trouvé une solution qui fonctionne, si vous ne voulez pas que votre écran à défilement à tous, dans mon cas, je n'ai pas.

Dans le projet mentionné ci-dessus/blog, ils mentionnent une fonction javascript que vous pouvez ajouter à éteindre le rebond, qui se résume essentiellement à ceci:

    document.ontouchmove = function(event){
        event.preventDefault();
    }

Si vous voulez en savoir plus sur la façon de l'appliquer, il suffit de télécharger QuickConnect et check it out.... Mais, fondamentalement, il fait appel javascript au chargement de la page... j'ai essayé, il suffit de le mettre dans la tête de mon document, et il semble bien fonctionner.

18voto

Zigglzworth Points 1524

Eh bien tout ce que j'ai fait pour le faire est :

[[webView.subviews objectAtIndex:0] setScrollEnabled:NO];  //to stop scrolling completely
[[webView.subviews objectAtIndex:0] setBounces:NO]; //to stop bouncing

Fonctionne très bien pour moi... Aussi, coché la réponse à cette question est l'une que Apple va rejeter si vous l'utilisez dans votre application iphone.

17voto

jstr Points 909

Dans le SDK iOS 5, vous pouvez accéder au défilement de la vue associée avec une vue web directement plutôt que d'une itération à travers ses sous-vues.

Donc pour désactiver rebondir dans le défilement de la vue, vous pouvez utiliser:

myWebView.scrollView.bounces = NO;

Voir la UIWebView Classe de Référence.

(Toutefois, si vous devez en charge les versions du SDK avant 5.0, vous devez suivre Mirek Rusin conseils.)

9voto

Raf Points 81

Avertissement. J'ai utilisé setAllowsRubberBanding: dans mon application, et Apple l'a rejeté, déclarant que la non-public des fonctions de l'API ne sont pas autorisés (citer: 3.3.1)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X