【问题标题】: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

标签: ios swift uitableview uiview


【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 2017-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多