如何防止表格视图滚动到视图后面?
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
这应该防止触摸通过它传递到它下面的表格视图。
【讨论】:
以上是关于如何防止表格视图滚动到视图后面?的主要内容,如果未能解决你的问题,请参考以下文章