2013-04-07 24 views
0

我有一堆UITableView行。当用户点击一个排,一个自定义弹出(这是一个自定义的UIView)将出现在桌子上:iOS:删除UITableView上的UIView导致无法与表交互

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    PopUp *myPopUp = [[PopUp alloc] initWithFrame:CGRectMake(0, 0, 320, 568)]; 
    [self.view addSubview:myPopUp]; 
} 

我加载从笔尖我自定义的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不能再与之交互(即用户不能滚动表格,不能在另一行上点击等)。我希望PopUp消失,并让表格再次完全互动。任何人都可以解释为什么发生这种情况,我可以解决这个问题?谢谢!


编辑与截图

  1. 的UITableView与一行数据:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#0

  2. 当选择一排,myPopUp出现在顶部:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#1

  3. 当按下“x”自定义按钮,它调用closePopUp,rem oves myPopUp from the superview:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ#2

  4. 用户无法与表格进行交互。用户不能选择一行,滚动表等

回答

2

实际上,您删除您从笔尖文件加载视图,但父是捕捉(0, 0, 320, 568)矩形内的每一个触摸另一张空白的UIView。

尝试从closePopUp方法去除上海华:

[self.superview removeFromSuperview]; 
+0

啊,这是做到了。非常感谢! – Chun 2013-04-07 23:22:03

2

我不知道发生了什么事情在你的具体情况,但我可以告诉你,添加子视图到UITableView可能导致类似的意外行为这个,这通常是一个坏主意。

为了解决发生的问题并获得更清洁的结构,我建议您将弹出视图添加到窗口而不是表格视图。

[self.view.window addSubview:myPopUp]; 
+0

我已经试过您的解决方案,但是当我删除myPopUp用户不能与屏幕在所有互动。如果这有助于澄清我的问题,我编辑了我的帖子和截图:http://imgur.com/PlIufHI,xGKxUul,qkt27oZ ...我在调试过程中发现了一些东西:如果我将框架设置为0,0,那么用户可以与它后面的表进行交互,但不能与myPopUp进行交互。当框架为320,568时,用户可以与myPopUp进行交互,但不能与其后的表进行交互。 – Chun 2013-04-07 23:17:07

+0

@Chun你可以在Xcode断点后输入这个命令来检查你的视图层次结构:'po [self recursiveDescription]'。这对调试像这样的问题很方便。 – 2013-04-07 23:22:25