iOS:删除位于UITableView之上的UIView会导致无法与表交互

iOS:删除位于UITableView之上的UIView会导致无法与表交互,ios,uitableview,uiview,popup,Ios,Uitableview,Uiview,Popup,我有一个有一大堆行的UITableView。当用户点击一行时,一个自定义弹出窗口(自定义UIView)将显示在表的顶部: - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { PopUp *myPopUp = [[PopUp alloc] initWithFrame:CGRectMake(0, 0, 320, 568)]; [self.view a

我有一个有一大堆行的UITableView。当用户点击一行时,一个自定义弹出窗口(自定义UIView)将显示在表的顶部:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    PopUp *myPopUp = [[PopUp alloc] initWithFrame:CGRectMake(0, 0, 320, 568)];
    [self.view addSubview:myPopUp];
}
我正在从nib加载自定义UIView弹出窗口:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        [self loadNib];
    }
    return self;
}

- (void) loadNib
{
    NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"PopUp" owner:self options:nil];
    UIView *mainView = [subviewArray objectAtIndex:0];
    [self addSubview:mainView];
}
在弹出窗口中,按下按钮时会导致弹出窗口关闭:

- (IBAction)closePopUp:(id)sender
{
    [self removeFromSuperview];
} 
按下按钮时,弹出窗口消失。但是,下面的UITableView不能再与交互,即用户不能滚动表格,不能点击另一行等。。我想弹出消失,并有表完全互动了。有人能解释为什么会发生这种情况,以及我如何解决这个问题吗?谢谢

用截图编辑

具有一行数据的UITableView:

选择一行后,myPopUp将显示在顶部:

当按下x自定义按钮时,它调用closePopUp,从superview中删除myPopUp:

用户现在无法与表交互。用户无法选择行、滚动表格等


我不知道在您的特定情况下发生了什么,但我可以告诉您,将子视图添加到UITableView可能会导致像这样的意外行为,这通常是一个坏主意

为了修复正在发生的事情并获得更清晰的结构,我建议您将弹出视图添加到窗口中,而不是添加到表视图中

[self.view.window addSubview:myPopUp];

我不知道在您的特定情况下发生了什么,但我可以告诉您,将子视图添加到UITableView可能会导致像这样的意外行为,这通常是一个坏主意

为了修复正在发生的事情并获得更清晰的结构,我建议您将弹出视图添加到窗口中,而不是添加到表视图中

[self.view.window addSubview:myPopUp];

实际上,您正在删除从nib文件加载的视图,但父视图是另一个空白UIView,它捕获0、0、320、568 rect中的每个触摸

尝试从closePopUp方法中删除superview:


实际上,您正在删除从nib文件加载的视图,但父视图是另一个空白UIView,它捕获0、0、320、568 rect中的每个触摸

尝试从closePopUp方法中删除superview:


我已经尝试过你的解决方案,但是当我删除myPopUp时,用户根本无法与屏幕交互。如果这有助于澄清我的问题,我已经用截图编辑了我的帖子:。。。不过,我在调试过程中发现了一些东西:如果我将帧设置为0,0,那么用户可以与它后面的表交互,但不能与myPopUp交互。当帧为320568时,用户可以与myPopUp交互,但不能与它后面的表交互。@您可以在Xcode断点后键入以下命令来检查视图层次结构:po[self recursiveDescription]。这对于调试像这样的视图问题很方便。我已经尝试过你的解决方案,但是当我删除myPopUp时,用户根本无法与屏幕交互。如果这有助于澄清我的问题,我已经用截图编辑了我的帖子:。。。不过,我在调试过程中发现了一些东西:如果我将帧设置为0,0,那么用户可以与它后面的表交互,但不能与myPopUp交互。当帧为320568时,用户可以与myPopUp交互,但不能与它后面的表交互。@您可以在Xcode断点后键入以下命令来检查视图层次结构:po[self recursiveDescription]。它可以很方便地调试像这样的视图问题。啊,这样做了。谢谢!啊,就这样。谢谢!