我有一个问题,就是在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上发现了一些看起来相似但对我不起作用的其他帖子,有什么建议吗?
谢谢!