在 iOS8 中使用 ModalPresentationStyle OverCurrentContext 时,ScrollsToTop 不起作用
Posted
技术标签:
【中文标题】在 iOS8 中使用 ModalPresentationStyle OverCurrentContext 时,ScrollsToTop 不起作用【英文标题】:ScrollsToTop not working when using ModalPresentationStyle OverCurrentContext in iOS8 【发布时间】:2015-07-24 15:47:19 【问题描述】:当呈现具有UIScrollView
或UIScrollView
子类的模态视图控制器(如UITableView
或UICollectionView
)并使用UIModalPresentationStyleOverCurrentContext
时,呈现的控制器滚动视图在状态栏不会滚动到顶部被窃听时,此行为发生在 ios8
而不是 iOS7
。
【问题讨论】:
【参考方案1】:点击状态按钮时不会滚动到顶部的一个原因是有多个滚动视图。控制器中只有一个滚动视图应该启用 scrollsToTop,而所有其他滚动视图应该禁用它。虽然这在iOS7
中不会发生,但在iOS8
中,如果呈现控制器具有启用了 scrollsToTop 的滚动视图,则呈现控制器的滚动视图不会滚动到顶部。由于viewWillAppear
,viewWillDisappear
在当前上下文中呈现模态视图控制器时不会被调用,所以呈现控制器中的滚动视图应该禁用它的scrollsToTop
属性,并且如果需要有一个回调允许呈现的控制器重新启用它.
【讨论】:
我也有同样的问题。我的 UIViewController 只包含表格视图,没有滚动视图,没有文本视图...我没有多个滚动视图(如果有,我看不到它)为了确保我在 Swift 中使用此方法:***.com/questions/4167806/… 但结果相同,它不起作用。 @cmi 在不知道您的视图层次结构的情况下无法真正说什么,我的问题是,即使它们是单独的控制器,在 iOS8 中使用 ModalPresentationStyleOverCurrentContext 时,一次只有一个 tableview 可能有 scrollsToTop = true ,所以在展示新控制器之前,我将 tableView 上的 scrollsToTop 设置为 false。以上是关于在 iOS8 中使用 ModalPresentationStyle OverCurrentContext 时,ScrollsToTop 不起作用的主要内容,如果未能解决你的问题,请参考以下文章