1

这是我面临的问题。我在主视图中有 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,这就是我无法滚动的原因。而且,正如我在EDIT 1 中所说: tableView 滚动到顶部 - 所以你可以看到 contentOffset 也归零。任何想法为什么内容大小会自动更改?

提前致谢。

4

2 回答 2

0

UITableView 中的内容是自动组织的,仅用于显示单元格和页眉/页脚元素。为了正常工作,您应该将表格包装到 parentView 并将您的菜单添加到该 parentView 而不是 UITableView。您也可以尝试在 table 上调用 reloadData 方法,因为它可以恢复视图的内容大小。

于 2013-10-14T10:55:58.157 回答
0

我认为您的 tableview 框架有问题。删除子视图后,尝试将表格视图的框架设置为其原始框架。这可能会解决您的问题

于 2013-10-14T09:42:57.877 回答