ios - iOS 中如何让剪切 View 接收触摸事件?

标签 ios cocoa-touch events touch

当 UITableView 不完全适合其父 View 时,被剪裁的部分不可滚动。您只能滚动 TableView 及其父 View 的交集。我相信这种类型的事件处理问题会发生在 UIView 的任何组合中,而不仅仅是 TableView 。是否有一个属性或其他东西我可以打开以允许剪切区域仍然接受触摸事件?

 _______
|       |
|    ___|__
|   |______|
|   |______|
|   |______|
|___|______|
    |______|

这是如何实现上述布局的相当简单的示例。

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

最佳答案

最简单的方法是让父 View 覆盖 - pointInside:withEvent: 来检查该点是否在其 subview 内,如果是则返回 YES。 (基本上,如果触摸位于父 View 或 TableView 内部,则父 View 需要返回 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];
}

关于ios - iOS 中如何让剪切 View 接收触摸事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19058347/

相关文章:

ios - 如何为不同的类编写一个通用的泛型函数?

iOS Facebook SDK : An active access token must be used to query information about the current user

ios - 为什么在 iOS7 上触摸 UISearchBar 时,我的 UISearchBar 和 UITableView Cell Header 之间会出现间隙?

iphone - 如何捕获全局异常?

javascript - Vue.js "emit event"不要冒泡到父元素和祖父元素

cocoa - IMKit 捕获 NSKeyup 事件

ios - 更新 tableview 中的单元格同时更新另一个单元格

ios - NSKeyedUnarchiver 不从 CoreData 数据属性解码 CLPlacemark 对象

ios - 在 Swift 中打印数据的大小(兆字节)

c# - 使用 for 循环的实例号作为函数调用名称的一部分