2

当 UITableView 不完全适合其父视图时,被剪裁的部分是不可滚动的。您只能滚动表视图与其父视图的交集。我相信这种类型的事件处理问题发生在 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];
4

1 回答 1

4

最简单的做法是让您的父视图覆盖- 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];
}
于 2013-09-27T19:22:51.643 回答