2012-09-24 9 views
5

dodaję obojętne Scrollview do mojej aplikacji w celu wykrycia kliknięcie użytkownika na pasku stanu, aby Performa zdarzenia w moim programie .. tworzę go w viewDidLoad:iOS6 ScrollBarShouldScrollToTop nie wypalanie/Scrollview Delegat problem

//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]; 

i następnie wdrożyć:

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

NSLog(@"scrollViewShouldScrollToTop"); 
. 
. 
} 

ramach wszystkich poprzednich wersjach iOS ten pracował długo i bezawaryjnie, jeszcze pod iOS 6, scrollViewShouldScrollToTop nigdy nie jest wywoływana. Czy to błąd? API twierdzi, że powinno to być nadal dostępne jako część delegata w iOS6, ale pod iOS6 zarówno na urządzeniu, jak i na symulatorze, którego nigdy nie wykonuje ... Czy ktoś ma pojęcie, co się dzieje?

Nadal nie ma innych TableView lub ScrollView, ale jest MAPA? Ale MapView nie ma opcji shouldScrollToTop, którą mogę znaleźć, aby ustawić na NIE .. więc nadal nie mogę zrozumieć, dlaczego to przestało działać pod iOS 6 ...

Odpowiedz

0

W systemie iOS 6 dotknij tylko powyższej części paska przewijania, aby wyświetlić zdarzenie scrollsToTop.

A tego scrollView nie można ukryć ani 0 alpha.

Ale może być pokryte. lub wyraźny kolor tła.

Więc na iOS 6, trzeba

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

Czy istnieje szansa, że ​​tworzony UIScrollView nie jest jakoś jedynym UIScrollView w hierarchii widoku? Wygląda jak w iOS6, jeśli masz więcej niż jeden UIScrollView w hierarchii widoku, tylko jeden powinien mieć scrollsToTop = YES. To jest ta, która ma wywołać metodę scrollViewShouldToTop.

Mój problem był podobny, że miałem bardzo podstawowej UITableView, że nie będzie już Autoscroll do góry, gdy pasek stanu został wykorzystany. W końcu przypomniałem sobie, że jedna z komórek w moim tableView używa UIWebView, i że komórka webView.scrollView była (prawidłowo, teraz w iOS6) przejmowała połączenie z scrollViewShouldScrollToTop, zanim zrobiłem iOS6 na moim tableView.

Po ustawieniu "ScrollsToTop = NO" tableViewCell, automatyczne przewijanie paska stanu znów działało tak samo jak wcześniej. Oto mniej więcej jak wygląda kod:

myCustomCellWithAWebView.webView.scrollView.scrollsToTop = NO; 

Mam nadzieję, że to pomoże!

+1

FYI, nie jest to nowe zachowanie w iOS6 - to już od dłuższego czasu. Zobacz http://stackoverflow.com/questions/4167806/automatic-scroll-to-top-doesnt-work-in-uitableview/5557900#5557900 –

+0

Nie ma żadnych innych widoków przewijania w mojej aplikacji, innych niż ukryty używany do wywołać kliknięcie na pasku stanu, aby wystrzelić zdarzenie. – user282172

+0

Co stanie się, jeśli nie wyślesz go z powrotem? Czy to działa, jeśli zostawisz to na górze? Jeśli tak, zostaw to na górze i ustaw alfę na 0 lub umieść ją poza ekranem. –