如何防止表格视图滚动到视图后面?

Posted

技术标签:

【中文标题】如何防止表格视图滚动到视图后面?【英文标题】:How do I prevent table view scrolling behind a view? 【发布时间】:2017-04-07 18:19:51 【问题描述】:

TableViewController 中,我有一个带有消息的半透明覆盖视图。覆盖正确地显示在TableViewController 上,但我仍然可以滚动此覆盖视图后面的表格视图。当覆盖在顶部时如何防止滚动?

我在 TableViewController 中构建了自定义叠加视图:

override func viewDidLoad() 
    super.viewDidLoad()

    loadData(
        id,
        success: (doc) -> () in
            let frame = CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height)

            let overlayView = EmptyCollectionView(frame : frame)
            overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)
            self.view.addSubview(overlayView)

            self.tableView.reloadData()
        ,
        error: ..)

我试过self.tableView.isUserInteractionEnabled = false

【问题讨论】:

hmmm 好像有问题...你在哪里将view 添加到视图层次结构中? @DonMag 我更新了代码以反映当我添加叠加视图时 我们需要知道self.view和self.tableview的关系 @Kamil.S - 原始帖子声明“我的TableViewController”所以,正如我在回答中指出的那样,self.view self.tableView 【参考方案1】:

好的 - 如果你在 UITableViewController 中,self.view 指的是 UITableView 本身。您想将您的叠加视图添加为表格视图的超级视图的子视图...

试试这个:

tableView.superview?.addSubview(overlayView)

你也可以简化一些事情,你应该实现尺寸控制来处理设备旋转等变化:

let overlayView = EmptyCollectionView(frame: tableView.frame)

overlayView.autoresizingMask = [.flexibleWidth, .flexibleHeight]

overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.8)

tableView.superview?.addSubview(overlayView)

【讨论】:

【参考方案2】:
overlayView.userInteractionEnabled = true

这应该防止触摸通过它传递到它下面的表格视图。

【讨论】:

以上是关于如何防止表格视图滚动到视图后面?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止行动画向下滚动 TableHeaderView?

Objective c - 表格视图内的按钮防止表格滚动

加载数据后如何防止滚动视图滚动到网络视图?

如何将滚动视图嵌入到表格视图中

如何让表格视图滚动到图像视图上方?

如何在滚动视图中进行多个表格视图