gpt4 book ai didi

ios - UITapGestureRecognizer 无法识别,因为 View 嵌套在多个 View 中

转载 作者:行者123 更新时间:2023-11-28 23:40:12 25 4
gpt4 key购买 nike

我有一个自定义 View ,我通过点击 View Controller 上的按钮或点击 TableView 单元格上的按钮( TableView 是 View Controller 的 subview )呈现

要关闭自定义 View ,我希望用户能够点击屏幕上的任意位置以关闭它。但是由于 View Controller 中 View 的许多层次结构。一个简单的 UITapGuestureRecognizer 不起作用。对于这种情况有什么解决方法吗?

最佳答案

创建UIView的子类,命名为MyTapView。将此类分配给您的父 View ,其中包含您的所有 subview 。在您的类中覆盖以下内容以拦截对您的 view 实例进行的任何触摸。

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event
{
if (!self.clipsToBounds && !self.hidden && self.alpha > 0) {
for (UIView *subview in self.subviews.reverseObjectEnumerator) {
CGPoint subPoint = [subview convertPoint:point fromView:self];
UIView *result = [subview hitTest:subPoint withEvent:event];
if (result != nil) {
return result;
}
}
}
// use this to pass the 'touch' onward in case no subviews trigger the touch
return [super hitTest:point withEvent:event];
}

此方法会忽略隐藏的、已禁用用户交互或 alpha 级别小于 0.01 的 View 对象。此方法在确定命中时不考虑 View 的内容(请随意修改)。因此,即使指定的点位于 View 内容的透明部分中, View 仍然可以返回,现在,在它被覆盖后,接收到边界外的触摸。

关于ios - UITapGestureRecognizer 无法识别,因为 View 嵌套在多个 View 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53657465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com