iPhone OS: Appuyez sur barre d'état pour faire défiler vers le haut ne fonctionne pas après avoir supprimer/ajouter
À l'aide de cette méthode pour masquer la barre d'état:
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
Lors de la définition de "caché" NE, le " tap-to-scroll-de-haut (dans UIWebView, UITableView, peu importe) ne fonctionne plus, et nécessite un redémarrage de l'application afin d'obtenir la fonctionnalité de retour.
Est-ce un bug (j'ai déposé une rdar de toute façon) ou ai-je raté une étape? Je devrais peut-être s'attendre à ce problème depuis la barre d'état "perd le contact" en quelque sorte avec la vue?
OriginalL'auteur avocade | 2009-09-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer le réglage de la ScrollsToTop true à la propriété à nouveau après le montrant:
Si cela ne fonctionne pas, vous êtes certainement affiche uniquement une vue de l'esprit? Si il n'y a plus d'un défilement d'un scrollViewDidScrollToTop message est ignoré...
Le problème, c'est que c'est une UIWebView qui doit obtenir le défilement en haut de comportement de retour–et il n'est pas direct UIScrollView sous-classe... ainsi que setScrollsToTop: ne fonctionne pas du tout. IL a probablement un scrollView quelque part dans son UIWebViewInternal struct, mais qui semble être très opaque. [webView valueForKey:@"_scrollView"] ne fonctionne pas à tous de s'directe de celui-ci. Tout autre nom de suppositions? 🙂
Vous pouvez ajouter la UIWebView comme une sous-vue d'un UIScrollView (dans mon application, il est une sous-vue d'une UITableView). Si c'est le seul point de vue à l'intérieur que UIScrollView, puis de l'appel -setScrollsToTop sur le UIScrollView devrait le faire fonctionner sur la UIWebView...
Votre nom est vraiment h4x0r, n'est-ce pas 🙂
😀 c'est ma voiture, le numéro de plaque de trop!...
OriginalL'auteur h4xxr
Dans iOS 5.0, vous pouvez accéder à la scrollview propriété de la UIWebView
OriginalL'auteur Paul Cooper
Le correctif suivant par Alex a travaillé pour moi. Merci!
Être pressé, ce correctif très travaillé, toutefois disposer de plus de temps je pourrais avez sous-classé la UIWebView et accessible protégées UIScrollView membre directement.
Le souci que j'ai avec Alex méthode est qu'elle suppose que UIScrollView est à l'index zéro de la sous-vues (encapsulation permet aux membres privés de changer). Ce qui suggère une autre solution encore:
OriginalL'auteur user305578
J'ai eu un problème similaire où le défilement en haut de la fonctionnalité a été perdu. S'avère que cela ne fonctionne que lorsque vous avez un seul actif à la fois (dans le même défilement de l'affichage). Dans mon cas, j'ai eu une vue de la table et un autre point de vue qui serait fade in/out. L'ajout d'un
removeFromSuperview
à la fin de l'animation a fait le tour.La réponse était dans le
UIScrollView.h
commentaires du fichier:OriginalL'auteur Juan
Vous pouvez utiliser le code suivant pour avoir la
UIWebView
ignorerscrollToTop
sans leUIScrollView
:((UIScrollView *)[[webView subviews] objectAtIndex:0]).scrollsToTop = NO;
Merci Alex! Beaucoup plus élégant et sûr pour vous.
Cela fonctionne pour moi. Excellente solution, merci!
OriginalL'auteur Nick Toumpelis
J'ai eu un problème similaire après la lecture d'une vidéo Youtube dans une de mes applications.
scrollsToTop
avait toujoursYES
mais sur la barre d'état n'a eu aucun effet.J'ai enfin compris que ma fenêtre d'application n'était plus la clé de la fenêtre. Après l'ajout de la ligne suivante à un UIWindow sous-classe (que j'avais déjà pour d'autres raisons), tout a fonctionné comme il se doit de nouveau:
OriginalL'auteur prendio2
J'ai juste couru à travers un comportement similaire dans l'application que je suis en train de travailler. Dans son cas, si vous chargez une vidéo YouTube à partir de l'intérieur d'une UIWebView, faire défiler vers le haut des arrêts de travail pour le reste de l'application du cycle de vie. Je suppose ce qui pourrait se passer après le chargement du lecteur de film, mais ne l'ont pas confirmé. Cette fonctionnalité a été beaucoup plus longtemps et a probablement moins de bugs.
OriginalL'auteur Ben Lachman
Lorsqu'il y a plusieurs scrollview, vous pouvez également définir scrollUpToTop NON pour les autres scrollview. cf:
setScrollsToTop avec plusieurs UIScrollView classes et/ou des sous-classes(UITableView)
OriginalL'auteur lansher1985
Je veux ajouter mon cas, j'ai ajouter une UIWebView sur un UIScrollView, comme
h4xxr
a répondu sur le haut:Je me suis donc tout simplement une façon de le faire fonctionner sur webView: il suffit de régler le scrollView·s scrollsToTop propriété faux.
Et quand touchez la barre d'état, il n'a pas intercepté par la scrollView, et la webView défile vers le haut!
OriginalL'auteur FFur