iOS6 ScrollBarShouldScrollToTop没有触发/ ScrollView Delegate问题

Spe*_*pgh 5 uiscrollview uiscrollviewdelegate ios6

我正在向我的应用添加一个虚拟ScrollView,以检测用户在状态栏上的点击,在我的程序中执行一个事件..我在ViewDidLoad中创建它:

//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];  
Run Code Online (Sandbox Code Playgroud)

然后我实施:

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

NSLog(@"scrollViewShouldScrollToTop");
 .
 .
 }
Run Code Online (Sandbox Code Playgroud)

在所有以前版本的IOS中,这种工作非常漂亮且完美无缺,但在iOS 6下,scrollViewShouldScrollToTop永远不会被调用.这是一个错误?API说它仍然可以作为iOS6中委托的一部分使用,但在设备和模拟器上的iOS6下它永远不会执行......任何人都知道发生了什么?

仍然没有其他TableView或ScrollView,但有一个MAPVIEW ?? 但是MapView没有我可以找到设置为NO的shouldScrollToTop ..所以我仍然无法理解为什么它在iOS 6下停止工作...

Joh*_*cko 5

您正在创建的UIScrollView是否有可能是视图层次结构中唯一的UIScrollView?在iOS6中看起来如果在视图层次结构中有多个UIScrollView,则只有一个应该具有scrollsToTop = YES.这是将调用其scrollViewShouldScrollToTop方法的方法.

我的问题类似于我有一个非常基本的UITableView,当状态栏被点击时它不再自动滚动到顶部.我终于记得我的tableView中的一个单元格使用了一个UIWebView,并且单元格webView.scrollView(正确地,现在在iOS6中)劫持了对scrollViewShouldScrollToTop的调用,在iOS6之前,我在tableView上进行了调用.

设置tableViewCell的"scrollsToTop = NO"后,状态栏自动滚动再次像以前一样工作.这里或多或少是代码的样子:

myCustomCellWithAWebView.webView.scrollView.scrollsToTop = NO;
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!


小智 0

在iOS 6上,只需点击状态栏scrollview上方的部分即可触发scrollsToTop事件。

并且,该scrollView 无法隐藏或0 alpha。

但可以覆盖。或清晰的背景颜色。

所以在 iOS 6 上,你需要

dummyScrollView.frame = self.view.bounds;
dummyScrollView.backgroundColor = [UIColor clearColor];  
Run Code Online (Sandbox Code Playgroud)