这是我面临的问题。我在主视图中有UITableView。当用户点击菜单按钮时,视图将添加到superview的视图层次结构中,此视图将覆盖除菜单按钮之外的所有屏幕。那就是我打电话
[self.view insertSubview:self._menuView belowSubview:self._menuButton]
用户再次点击菜单按钮后,我致电
[self._menuView removeFromSuperview]
然而,在此之后,UITableView停止滚动,实际上它滚动,但只是一点点,几个像素,然后弹回到我插入_menuView之前的位置。我在插入和删除_menuView之后监视了菜单层次结构,它实际上被删除了,而且没有覆盖UITableVIew的视图,因此其他视图无法从UITableView中窃取。可能是什么问题?有什么想法吗?
编辑1:我注意到除了无法滚动外,还会发生另一件奇怪的事情。当我显示menuView时,tableView会滚动到顶部,没有动画。 (menuView只是半透明的,所以我可以看到它下面的tableView)
编辑2:我在插入_menuView之前和之后监视了tableView的contentSize和contentOffset,无法滚动的原因是某种方式正在改变contentSize。
TABLE VIEW BEFORE INSERTING MENU - contentSize:{Width=320, Height=10519} contentOffset:{X=0, Y=3980}
TABLE VIEW AFTER INSERTING MENU - contentSize:{Width=320, Height=44} contentOffset:{X=0, Y=0}
如您所见,高度更改为44,这就是我无法滚动的原因。而且,正如我在编辑1:中所说的那样,tableView被滚动到顶部 - 所以你可以看到contentOffset也被归零。有关内容大小自动更改的任何想法吗?
提前致谢。
答案 0 :(得分:0)
我认为你的tableview框架存在问题。在删除子视图后,尝试将tableview的框架设置在其原始框架上。这可以解决您的问题
答案 1 :(得分:0)
UITableView中的内容自动组织,仅用于显示细胞和细胞。页眉/页脚元素。要正常工作,您应该将表包装到parentView中,并将菜单添加到该parentView而不是UITableView。您还可以尝试在表上调用reloadData方法,因为它可以恢复视图的内容大小。