IOS/Objective-C: 使用 HitTouch 将 ScrollView 上的 Touch 事件传递给 View Below

IOS/Objective-C: Pass Touch Event on ScrollView to View Below using HitTouch

我有一个错误,无法识别只能通过滚动到达的文本视图底部区域的触摸。使用可视化调试器,我发现滚动视图挡住了视图的底部。关于 SO 和一些 Apple 文档的一些问题和 this excellent article here 建议当你有一个下面的视图阻塞时,你需要实现以下方法的某个版本:

  - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    NSLog(@"hit test firing");
    UIView *hitTestView = [super hitTest:point withEvent:event];
    if (hitTestView == self) {
        hitTestView = nil;
    }
    return hitTestView;
}

-

但是,我对何时触发此方法以及什么是什么视图感到困惑。在上面的代码中,我在哪里指定 scrollview 是阻塞我的 textview?我还收到上面代码的错误:没有可见接口声明选择器 hitTestPointWithEvent

感谢您的任何建议。 这是可视化调试器中的图像。蓝色为未接收触摸(点击)事件。

此方法属于 UIView,您需要将 UIScrollView 子类化。在根视图中的每次触摸时都会调用此方法。在我的测试中,这个方法总是被调用两次。

请考虑,来自文档:

"This method ignores view objects that are hidden, that have disabled user interactions, or have an alpha level less than 0.01. This method does not take the view’s content into account when determining a hit."