【发布时间】:2013-10-14 09:33:33
【问题描述】:
这是我面临的问题。我在主视图中有 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 也归零。任何想法为什么内容大小会自动更改?
提前致谢。
【问题讨论】:
-
menuView 是具有相同委托/数据源的 tableview 吗?
-
不,tableView 的数据源/委托是一个单独的对象。和menuView无关。
标签: ios uitableview