如何在iOS中让剪辑视图接收触摸事件?

如何在iOS中让剪辑视图接收触摸事件?,ios,cocoa-touch,events,touch,Ios,Cocoa Touch,Events,Touch,如果UITableView未完全适合其superview,则剪裁的部分不可滚动。只能滚动表格视图与其superview的交点。我相信这种类型的事件处理问题发生在UIView的任意组合中,而不仅仅是表视图。是否有我可以打开的属性或东西,以允许剪裁区域仍然接受触摸事件 _______ | | | ___|__ | |______| | |______| | |______| |___|______| |______| 下面是如何实现上述布局的一个相当简单的示

如果UITableView未完全适合其superview,则剪裁的部分不可滚动。只能滚动表格视图与其superview的交点。我相信这种类型的事件处理问题发生在UIView的任意组合中,而不仅仅是表视图。是否有我可以打开的属性或东西,以允许剪裁区域仍然接受触摸事件

 _______
|       |
|    ___|__
|   |______|
|   |______|
|   |______|
|___|______|
    |______|
下面是如何实现上述布局的一个相当简单的示例

UIView* parentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 150)];
UITableView* childView = [[UITableView alloc] initWithFrame:CGRectMake(50, 50, 100, 150)];
[self.view addSubview:parentView];
[self.parentView addSubview:childView];

最简单的方法是让父视图覆盖
-pointInside:withEvent:
,以检查该点是否在其子视图内,如果在子视图内,则返回YES。(基本上,如果触摸在父视图或tableview中,则父视图需要返回YES)

比如:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    CGPoint pointInTableView = [tableView convertPoint:point fromView:self];
    return [super pointInside:point withEvent:event] || [tableView pointInside:pointInTableView withEvent:event];
}

最简单的方法是让父视图覆盖
-pointInside:withEvent:
,以检查该点是否在其子视图内,如果在子视图内,则返回YES。(基本上,如果触摸在父视图或tableview中,则父视图需要返回YES)

比如:

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    CGPoint pointInTableView = [tableView convertPoint:point fromView:self];
    return [super pointInside:point withEvent:event] || [tableView pointInside:pointInTableView withEvent:event];
}