2012-09-24 22 views
5

Tôi đang thêm một ScrollView giả vào ứng dụng của mình để phát hiện người dùng nhấp vào thanh trạng thái, để thực hiện một sự kiện trong chương trình của tôi .. Tôi đang tạo nó trong ViewDidLoad:iOS6 ScrollBarShouldScrollToTop không kích hoạt/ScrollView Sự cố ủy quyền

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

sau đó tôi thực hiện:

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

NSLog(@"scrollViewShouldScrollToTop"); 
. 
. 
} 

dưới tất cả các phiên bản trước của iOS này đã làm việc thật đẹp và hoàn hảo, tuy nhiên dưới iOS 6 các scrollViewShouldScrollToTop không bao giờ được gọi. Đây có phải là một lỗi?? API nói rằng điều này vẫn sẽ có sẵn như là một phần của đại biểu trong iOS6, nhưng dưới iOS6 trên cả thiết bị và trình mô phỏng nó không bao giờ thực hiện ... Bất kỳ ai có bất kỳ ý tưởng gì đang xảy ra?

Vẫn không có TableView hoặc ScrollView khác, nhưng có MAPVIEW ?? Nhưng MapView không có một shouldScrollToTop mà tôi có thể tìm thấy để thiết lập để NO .. vì vậy tôi vẫn còn xa lẫn lộn tại sao điều này ngừng làm việc dưới iOS 6 ...

Trả lời

0

Trên iOS 6, chỉ nhấn vào phần phía trên chế độ xem cuộn của thanh trạng thái có thể kích hoạt cuộn cuộnĐối với sự kiệnTop.

Và, cuộn đó không thể ẩn hoặc 0 alpha.

Nhưng nó có thể được bảo hiểm. hoặc màu nền rõ ràng.

Vì vậy trên iOS 6, bạn cần

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

Có cơ hội nào mà UIScrollView bạn đang tạo ra không không phải bằng cách nào đó UIScrollView duy nhất trong hệ thống phân cấp khung nhìn của bạn? Dường như trong iOS6, nếu bạn có nhiều hơn một UIScrollView trong hệ thống phân cấp chế độ xem của mình, chỉ có một lớp cần có scrollsToTop = YES. Đây là một trong đó sẽ có phương thức scrollViewShouldScrollToTop của nó được gọi.

Vấn đề của tôi cũng tương tự như ở chỗ tôi đã có một rất UITableView cơ bản rằng sẽ không còn autoscroll đầu trang khi thanh trạng thái bị nghe lén. Cuối cùng tôi nhớ rằng một trong các ô trong tableView của tôi sử dụng UIWebView và rằng ô của webView.scrollView là (chính xác, bây giờ trong iOS6) cướp cuộc gọi tới scrollViewShouldScrollToTop, trước khi iOS6, được thực hiện trên tableView của tôi.

Sau khi thiết lập "scrollsToTop = NO" của tableViewCell, thanh trạng thái tự động ghi lại một lần nữa hoạt động như trước đây. Dưới đây là nhiều hơn hoặc ít hơn cách mã trông:

myCustomCellWithAWebView.webView.scrollView.scrollsToTop = NO; 

Hy vọng điều này sẽ hữu ích!

+1

FYI, đây không phải là một hành vi mới trong iOS6 - nó được khoảng một thời gian dài. Xem http://stackoverflow.com/questions/4167806/automatic-scroll-to-top-doesnt-work-in-uitableview/5557900#5557900 –

+0

Không có chế độ xem cuộn nào khác trong ứng dụng của tôi, ngoại trừ chế độ xem ẩn được sử dụng để kích hoạt nhấp chuột trên thanh trạng thái để kích hoạt sự kiện. – user282172

+0

Điều gì sẽ xảy ra nếu bạn không gửi nó về phía sau? Nó có hoạt động nếu bạn để nó ở trên không? Nếu vậy, hãy để nó ở trên cùng và đặt alpha thành 0 hoặc vị trí tắt màn hình, có lẽ. –

Các vấn đề liên quan