2012-09-24 7 views
5

ich eine Dummy-Scroll meiner app bin das Hinzufügen eines Benutzers, klicken Sie auf der Statusleiste zu erkennen, ein Ereignis in meinem Programm Performa .. Ich schaffe es in der ViewDidLoad:iOS6 ScrollBarShouldScrollToTop nicht Brennen/Scroll Delegate Ausgabe

//Dummy Scroll is for the tap on status bar to work 

UIScrollView *dummyScrollView = [[UIScrollView alloc] init]; 
dummyScrollView.delegate = self; 
[[self view ] addSubview:dummyScrollView]; 
[[self view] sendSubviewToBack:dummyScrollView]; 

ich dann implementieren:

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView 
{ 

NSLog(@"scrollViewShouldScrollToTop"); 
. 
. 
} 

unter allen früheren Versionen von iOS diese schön gearbeitet hat und einwandfrei, noch unter iOS 6 die scrollViewShouldScrollToTop werden nie genannt. Ist das ein Fehler? Die API sagt, dies sollte immer noch als Teil des Delegaten in iOS6 verfügbar sein, aber unter iOS6 sowohl auf dem Gerät als auch auf dem Simulator wird es nie ausgeführt ... Wer hat eine Idee, was vor sich geht?

Noch keine andere TableView oder ScrollView, aber es gibt eine MAPVIEW ?? Aber die MapView hat keine scouldScrollToTop, die ich finden kann, um auf NEIN zu setzen .. so bin ich immer noch darüber verwirrt, warum dies nicht mehr unter iOS 6 funktioniert ...

Antwort

0

Auf iOS 6, tippen Sie nur auf den Teil über scrollview der Statusleiste kann ScrollsToTop Ereignis auslösen.

Und diese ScrollView kann nicht versteckt werden oder 0 Alpha.

Aber es kann abgedeckt werden. oder klare Hintergrundfarbe.

Also auf iOS 6, müssen Sie

dummyScrollView.frame = self.view.bounds; 
dummyScrollView.backgroundColor = [UIColor clearColor]; 
5

Gibt es eine Chance, dass die UIScrollView Sie erstellen ist nicht das einzige UIScrollView in Ihrer View-Hierarchie? Es sieht aus wie in iOS6, wenn Sie mehr als ein einzelnes UIScrollView in Ihrer Ansichtshierarchie haben, sollte nur eins scrollsToTop = YES haben. Dies ist die Methode, für die die scrollViewShouldScrollToTop-Methode aufgerufen wird.

Mein Problem war ähnlich, dass ich ein sehr Grund UITableView hatte, die nicht mehr Autoscroll an die Spitze würde, wenn die Statusleiste abgehört wurde. Ich erinnerte mich schließlich daran, dass eine der Zellen in meiner TableView ein UIWebView verwendet und dass die Zelle webView.scrollView (korrekt, jetzt in iOS6) den Aufruf von scrollViewSouldScrollToTop, der vor iOS6 auf meinem TableView vorgenommen wurde, entführte.

Nachdem Sie die "scrollsToTop = NO" der TabelleViewCell gesetzt hatten, funktionierte die Statusleiste autoscroll wieder wie zuvor. Hier ist mehr oder weniger, wie der Code aussieht:

myCustomCellWithAWebView.webView.scrollView.scrollsToTop = NO; 

hoffe, das hilft!

+1

FYI, dies ist kein neues Verhalten in iOS6 - es ist schon eine lange Zeit. Siehe http://stackoverflow.com/questions/4167806/automatic-scroll-to-top-doesnt-work-in-ugutableview/5557900#5557900 –

+0

Es gibt keine anderen Scroll-Ansichten in meiner App, außer der versteckte, die verwendet wird Klicken Sie auf die Statusleiste, um das Ereignis auszulösen. – user282172

+0

Was passiert, wenn Sie es nicht nach hinten schicken? Funktioniert es, wenn du es oben liegst? Wenn ja, belassen Sie es oben und stellen Sie den Alpha vielleicht auf 0 oder positionieren Sie ihn auf dem Bildschirm. –