Mit dieser Methode können Sie die Statusleiste ausblenden:
%Vor%Wenn Sie "hidden" wieder auf "NO" setzen, funktioniert die TAP-to-top-Funktion (in UIWebView, UITableView, was auch immer) nicht mehr und erfordert einen Neustart der App, um die Funktionalität wiederherzustellen.
Ist das ein Fehler (ich habe sowieso einen Rdar eingereicht) oder habe ich einen Schritt verpasst? Sollte ich dieses Verhalten vielleicht erwarten, da die statusBar "irgendwie den Kontakt verliert" mit der jeweiligen Ansicht?
Sie könnten versuchen, die ScrollsToTop-Eigenschaft nach dem erneuten Anzeigen auf true zu setzen:
%Vor%Wenn das nicht funktioniert, zeigen Sie definitiv nur eine Ansicht? Wenn mehrere Scroll-Ansichten vorhanden sind, wird eine scrollViewDidScrollToTop-Nachricht ignoriert ...
In iOS 5.0 können Sie auf die Scrollview-Eigenschaft von UIWebView zugreifen
%Vor%Die folgende Korrektur von Alex hat für mich funktioniert. Danke!
%Vor%In Eile hat dieser Fix funktioniert, aber mit mehr Zeit habe ich vielleicht das UIWebView subclassiert und direkt auf das geschützte UIScrollView-Mitglied zugegriffen.
Die Sorge, die ich mit Alex 'Methode habe, ist, dass angenommen wird, dass UIScrollView im Index Null der Subviews ist (die Kapselung erlaubt es privaten Mitgliedern, sich zu ändern). Was noch eine andere Lösung nahelegt:
%Vor% Ich hatte ein ähnliches Problem, bei dem die Scroll-to-Top-Funktionalität verloren ging. Es stellt sich heraus, dass dies nur funktioniert, wenn Sie jeweils nur eine aktive Ansicht haben (innerhalb derselben Scroll-Ansicht). In meinem Fall hatte ich eine Tabellenansicht und eine andere Ansicht, die ein- und ausgeblendet werden würde. Das Hinzufügen eines removeFromSuperview
am Ende der Animation hat den Trick gemacht.
Die Antwort war in den UIScrollView.h
Dateikommentaren:
Sie können den folgenden Code verwenden, um die UIWebView
ignorieren scrollToTop
ohne die zusätzliche UIScrollView
:
Ich hatte ein ähnliches Problem, nachdem ich ein Youtube-Video in meiner App abgespielt hatte. scrollsToTop
wurde weiterhin auf YES
festgelegt, aber das Tippen auf die Statusleiste hatte keine Auswirkungen.
Ich erkannte schließlich, dass mein App-Fenster nicht mehr das Schlüsselfenster war. Nach dem Hinzufügen der folgenden Zeile zu einer UIWindow-Unterklasse (die ich bereits aus anderen Gründen hatte) funktionierte alles wieder wie es sollte:
%Vor%Ich bin gerade in der App, an der ich gerade arbeite, auf ein ähnliches Verhalten gestoßen. Wenn Sie in einem solchen Fall ein YouTube-Video aus einem UIWebView laden, scrollt der Bildlauf nach oben, um für den Rest des Lebenszyklus der Anwendung zu funktionieren. Ich gehe davon aus, dass dies auch nach dem Laden des Movie-Players passieren könnte, habe dies aber nicht bestätigt. Diese Funktionalität ist viel länger und hat wahrscheinlich weniger Bugs.
Wenn es mehrere Bildlaufansichten gibt, können Sie scrollUpToTop auch für die andere Bildlaufansicht auf NEIN setzen. Siehe:
setScrollsToTop mit mehreren UIScrollView-Klassen und / oder -Unterklassen (UITableView)
Ich möchte meinen Fall hinzufügen, ich füge ein UIWebView auf einem UIScrollView hinzu, wie h4xxr
oben beantwortet hatte:
Wenn mehrere Scroll-Ansichten vorhanden sind, wird eine scrollViewDidScrollToTop-Nachricht ignoriert
Also bekomme ich einen einfachen Weg, um es mit webView zu arbeiten: setze einfach die scrollsToTop Eigenschaft des scrollView s false.
Und wenn Sie auf die Statusleiste tippen, wird sie nicht von scrollView abgefangen, und der webView scrollt nach oben!
%Vor%Tags und Links iphone iphone-sdk-3.0 cocoa-touch