我有很多观点,每个观点都有很多子视图。 我试图为每个子视图指定
string _statement = "IF($G4>100,1,0)";
但是当我按状态栏时,我的scrollsToTop = false
不会滚动到顶部。
我想我错过了一些观点...
我知道有一个类似的帖子,但它没有回答(UITableView scroll to top when tapping status bar at top of the screen)
所以我决定实现这个功能:
TableView
但它也不起作用。我不知道我错过了什么。
答案 0 :(得分:4)
你可能会遇到两个问题:
UIScrollView
个实例。您应该为父scrollsToTop
或从中继承的对象(例如self.collectionView?.scrollsToTop = false
或viewDidLoad
)停用UIScrollView
(例如UITableView
中的UICollectionView
) )。 来自Apple scrollViewShouldScrollToTop(_:)
如果委托没有实现此方法,则假定为true。要使滚动到顶部的手势(点击状态栏)生效,UIScrollView的scrollsToTop属性必须设置为YES。
scrollViewShouldScrollToTop
。你应该检查为什么会发生。否则你将需要做一些肮脏的工作:添加一些手势并处理它们。有趣的链接:
Scroll to top of UITableView by tapping status bar
Why doesn't UIScrollView/UITableview respond to taps on the status bar, and scroll to the top?
答案 1 :(得分:3)
好的,我发现为什么我的tableview不会滚动!
我只在我的表视图的视图控制器的viewDidLoad中调用了checkForScrollViewInView()函数。为每个子视图禁用scrollToTop。
但是我忘记了我有另一个"活跃"查看控制器...在我的应用程序中,我有一个左侧菜单,可以打开滑动。在左侧菜单的视图控制器中调用checkForScrollViewInView()解决了我的问题。
func checkForScrollViewInView(view:UIView) {
for subview in view.subviews as [UIView] {
if subview.isKindOfClass(UITextView) {
(subview as! UITextView).scrollsToTop = false
}
if subview.isKindOfClass(UIScrollView) {
(subview as! UIScrollView).scrollsToTop = false
}
if subview.isKindOfClass(UITableView) {
(subview as! UITableView).scrollsToTop = false
}
if (subview.subviews.count > 0) {
self.checkForScrollViewInView(subview)
}
}
}