通常在点击屏幕顶部时,tableview会一直滚动到顶部.出于某种原因,这在我的一个视图控制器中不起作用.
hirarchy如下:
UIView
- > WebView
- > TableView
-----> SearchBar
SearchDisplayController.
我想我已经把所有东西都正确地连接起来了(datasource,delegate,...).我有一个类似的视图控制器,一切正常.唯一的区别似乎是WebView,它在视图控制器中缺失,其中tap-and-scroll-to-top工作...
有任何想法吗?
此致,Sascha
您可能已向视图层次结构添加了一些视图,该视图层次结构是UIScrollView或包含滚动视图(例如UIWebView
或UITextView
).当你点击状态栏,iOS的搜索与最上面的滚动视图scrollsToTop
设置为YES
和滚动到其顶部.
将此添加到您的班级:
- (void) disableScrollsToTopPropertyOnAllSubviewsOf:(UIView *)view { for (UIView *subview in view.subviews) { if ([subview isKindOfClass:[UIScrollView class]]) { ((UIScrollView *)subview).scrollsToTop = NO; } [self disableScrollsToTopPropertyOnAllSubviewsOf:subview]; } }
......并打电话
[self disableScrollsToTopPropertyOnAllSubviewsOf:myAddedSubview];
解决问题,让您的表视图再次滚动到顶部.
您需要禁用scrollsToTop
除一个可滚动视图之外的所有视图.既然UITableView
是后代UIScrollView
,那很容易做到.但是,如果你想在webview上禁用它,它会有点棘手.这似乎有效:
[webView.subviews objectAtIndex:0].scrollsToTop = NO;
但这有点不确定,因为它在webview的未记录部分中徘徊.如果Apple决定重新安排子视图,它可能会停止工作.