容器视图接收触摸而不是iPad上的子视图

时间:2015-01-15 16:30:56

标签: ios objective-c ios7 ios8

我有一个问题,就是在UIView中获取UITableViewController以获得iOS8中的触摸(它在iOS7中运行良好)。

以下是设置代码:

UITableViewController *tvc = [[UITableViewController alloc] initWithStyle:UITableViewStyleGrouped];
tvc.tableView.userInteractionEnabled = YES;
tvc.tableView.frame = CGRectMake(0, 0, self.incentivesContainerView.frame.size.width, self.incentivesContainerView.frame.size.height);
[self addChildViewController:tvc];
self.incentivesContainerView.clipsToBounds = YES;
[self.incentivesContainerView addSubview:tvc.view];

我已经设置了数据源和委托,一切都与数据一起正常工作。问题是incentiveContainerView似乎阻止了对UITableViewController的触摸。我有一个解决方法,为容器添加一个手势识别器:

[self.incentivesContainerView addGestureRecognizer:[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tappedSelectIncentivesView:)]];

哪个电话:

- (void)tappedSelectIncentivesView:(UITapGestureRecognizer *)tap {
    CGPoint tapSpot = [tap locationInView:self.selectIncentivesVC.tableView];
    [self.selectIncentivesVC tableView:self.selectIncentivesVC.tableView didSelectRowAtIndexPath:[self.selectIncentivesVC.tableView indexPathForRowAtPoint:tapSpot]];
}

传递触摸事件并且工作正常。

但是,如果可能的话,我想采用更清洁的方法,有更好的方法吗?

我发现这篇文章看起来像我的问题,但我真的不是UIView的子类:How to Make Touch Events Affect View's Behind a Container View?

我在SO上发现了一些看起来相似但对我不起作用的其他帖子,有什么建议吗?

谢谢!

0 个答案:

没有答案