UITableViewCell 变得无响应这是一个非常不同的问题,但解决方案非常不同。
我的 tableView 是 UIViewController 中的子视图,最初工作正常,我可以选择表中的各个行。However, I have created my own popup when a row is selected (the popup is a UIView) that appears towards the bottom of the screen. 在弹出这个窗口时,我还创建了另一个 UIView,它覆盖了弹出窗口后面的屏幕,它使背景变暗。发生的第三件事是我创建了一个 UITapGestureRecogniser 来跟踪用户的点击,如果他们在 UIView 之外点击,则删除两个 UIView 和 TapGestureRecogniser 并调用 deselectRowAtIndex... 方法。
但是,此时我无法使用 tableView,因为我希望能够在 tableView 中选择不同的字符串并再次出现弹出窗口(弹出窗口最终将包含使用户能够移动到不同的链接视图控制器)。
我试图重新加载数据,删除 tableview 并替换它,编辑 didSelectRowAtIndex,删除 deselectRowAtIndex 方法,但是我尝试过的任何东西似乎都不起作用,我在 stackoverflow 上找不到任何东西,因为我的问题似乎很具体(虽然如果那里有什么东西,我很抱歉)。
我将添加我的代码的一些部分,但是,我不确定问题出在哪里,并且我可能没有复制正确的部分。
移除开销是来自 tapGesture 的选择器方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(_popOverView == nil)
{
_popOverView = [[UIView alloc]initWithFrame:CGRectMake(20, 200, 280, 150)];
_popOverView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"wood.jpeg"]];
}
if(_mask == nil)
{
_mask = [[UIView alloc] initWithFrame:self.view.frame];
[_mask setBackgroundColor:[UIColor colorWithWhite:0.0 alpha:0.78]];
}
if (_tapDetector == nil)
{
_tapDetector= [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(removeOverHead:)];
}
[self.view addSubview:_mask];
[self.view addSubview:_popOverView];
[self.view addGestureRecognizer:_tapDetector];
}
-(void) removeOverHead:(UITapGestureRecognizer*) sender
{
CGPoint locationOfTap = [_tapDetector locationInView:self.view];
if (locationOfTap.y < (200 + 150) && locationOfTap.y > 200 && locationOfTap.x > 20 && locationOfTap.x < (20 + 280) ) {
NSLog(@"%f,%f",[_tapDetector locationInView:self.view].x,[_tapDetector locationInView:self.view].y);
}
else
{
[_mask removeFromSuperview];
[_popOverView removeFromSuperview];
[_tapDetector removeTarget:self action:@selector(removeOverHead:)];
/*this idea doesn't work :(
[self.tableView removeFromSuperview];
[self.view addSubview:_tableView];*/
}
}
我真的希望答案在这里并且非常简单,并提前感谢您抽出时间阅读本文。