iOS:如果触摸在特定区域内,则发送触摸事件以查看后面

标签 ios swift uiview uigesturerecognizer touch-event

我有一个 View A,其中包含一些自定义 UI 控件。 View A 比它在屏幕上显示的 UI 控件要大。 View A 在 ViewController A 中,它位于 ViewController B 之上(VC B 是 VC A 的属性)。 我想告诉我的手势识别器,当用户在 View A 的特定区域内点击时, View A 根本不应该响应触摸事件,而应该由 VC B 内部的 View 使用和处理。

一旦用户在 View A 中的特定区域内触摸,我尝试将 isUserInteractionEnabled 设置为 false,这样触摸事件将由 View A(或 VC A)后面的 View 自动处理。 问题是,一个 isUserInteractionEnabled 设置为 false,我无法再响应 View A 的正确区域中的触摸事件。

是否有更好的方法将触摸事件发送到 View A 后面的 View ,前提是它位于 View A 的特定区域?

enter image description here

最佳答案

您可以重写pointInside 方法使 Controller A 中的 View A 避免处理事件,效果类似于isUserInteractionEnabled 的作用。并且您还将有一种计算特定面积的方法。

例子:

class ViewA: UIView{
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        //assume this area has no response
        let areaNoResponses = CGRect(x: 10, y: 10, width: 100, height: 100) 

        if (areaNoResponses.contains(point)) {
            return false;  //no response, like ViewA.isUserInteractionEnabled = NO
        }
        return true;
    }
}

关于iOS:如果触摸在特定区域内,则发送触摸事件以查看后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54742829/

相关文章:

ios - 从 CodableAlamofire 获取对象数组

ios - 显示 View Controller 会导致稍后出现问题

ios - Swift:动画后将 UIView 的框架重置为其约束

ios - 将应用程序提交到苹果商店时出现问题 - "This bundle is invalid"

javascript - IOS 应用程序 webview SVG ClipPath 问题

ios - 将 UITextfield 从不可编辑更改为可编辑 - Swift

ios - 递归查找特定类型iOS的 View

ios - iPad上,基于UIView的新类的initWithFrame没有被调用?

ios - 无法为 UICollectionView 设置背景图像

IOS 自定义表格单元格不会自动调整方向变化的宽度