我在self.view中添加了几个按钮。当用户点击一个按钮时,我将加载另一个视图(subView)。我加载subView的代码如下所示
subView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.scrollView.contentSize.width, self.scrollView.contentSize.height)];
subView.tag=1;
// and then i add various other components to it
[self.view addSubview:subView]; // and finally add it to the view
当用户触摸此视图时,我会检测到它并删除视图(我已经完成了检测部分)。
这是我删除视图的方式
UIView *v = [self.subView viewWithTag:1];
v.hidden = YES;
[v endEditing:YES];
[v removeFromSuperview];
视图消失了,但我无法点击self.view上的按钮或任何内容。当我将鼠标光标停在按钮上一段时间后,我可以点击它,否则我不能。我该如何解决这个问题?
答案 0 :(得分:3)
尝试删除这样的子视图:
for (UIView *subView in self.view.subviews) {
if (subView.tag == (int)yourSubViewTag) {
[subView removeFromSuperview];
}
}
答案 1 :(得分:2)
这一行:
UIView *v = [self.subView viewWithTag:1];
真的是:
UIView *v = [self.view viewWithTag:1];
答案 2 :(得分:1)
我认为你的问题是你做的
[self.subView viewWithTag:1];
但您要删除的视图由self.view“拥有”,因此它应该是
[self.view viewWithTag:1];
但是如果您有对subView的引用,为什么要再次搜索它?为什么不马上:
self.subView.hidden = YES;
[self.subView endEditing:YES];
[self.subView removeFromSuperview];
顺便说一句,你可能想查看你的内存管理,我看到你分配了你的subView,但是当我再次删除视图时,我看不到它被释放。也许你这样做,而你只是不显示代码,在这种情况下忘记我的评论。