在 iOS8 中使用 ModalPresentationStyle OverCurrentContext 时,ScrollsToTop 不起作用

Posted

技术标签:

【中文标题】在 iOS8 中使用 ModalPresentationStyle OverCurrentContext 时,ScrollsToTop 不起作用【英文标题】:ScrollsToTop not working when using ModalPresentationStyle OverCurrentContext in iOS8 【发布时间】:2015-07-24 15:47:19 【问题描述】:

当呈现具有UIScrollViewUIScrollView 子类的模态视图控制器(如UITableViewUICollectionView)并使用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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

TTTAttributedLabel 链接检测在 iOS8 中无法使用 swift

在 ios8 中使用 swift 语言发送短信

在 iOS8 中使用 UISearchBar 启用取消按钮

无法使用社交框架在 iOS8 中设置联系人图像

在 iOS8 中使用 Home kit 框架设置家庭

TTTAttributedLabel链接检测在iOS8中使用swift无法正常工作