【问题标题】:How do make a clipped views recieve touch events in iOS?如何让剪辑视图在 iOS 中接收触摸事件?
【发布时间】:2013-09-27 19:10:39
【问题描述】:

当 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];

【问题讨论】:

    标签: ios cocoa-touch events touch


    【解决方案1】:

    最简单的做法是让您的父视图覆盖- 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];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-27
      • 2012-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多