我能看到UITapGestureRecognizer号.因此,当我点击该视图时,另一个视图会出现在该视图的上方.这个新视图有三个按钮.当我现在按下这些按钮中的一个时,我没有得到按钮的动作,我只得到了轻击手势的动作.所以我不能再用这些按钮了.我能做些什么才能把活动传到这些按钮上呢?奇怪的是,按钮仍然会突出显示.

我不能在收到TAP之后就删除UITapGestureRecognizer.因为使用它还可以删除新视图.意思是我要behavior like the fullscreen vide controls分.

推荐答案

您可以将控制器或视图(创建手势识别器的那个)设置为UITapGestureRecognizer的代理.然后,您可以在委托中实现-gestureRecognizer:shouldReceiveTouch:.在您的实现中,您可以测试touch 是否属于新的子视图,如果属于,则指示手势识别器忽略它.类似于以下内容:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
    // test if our control subview is on-screen
    if (self.controlSubview.superview != nil) {
        if ([touch.view isDescendantOfView:self.controlSubview]) {
            // we touched our control surface
            return NO; // ignore the touch
        }
    }
    return YES; // handle the touch
}

Ios相关问答推荐

在SwiftUI中动态隐藏列表的空部分

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

设置托管在DigitalOcean上的iOS通用链接

mapView swift 导致警告有网格错误

为什么applicationState发布者只发布一次?

使用 AVCaptureDeviceTypeBuiltInTripleCamera 时 Select 合适的相机进行条码扫描

VStack 显示错误实例方法 'sheet(item:onDismiss:content:)' 要求 'Int' 符合 'Identifiable'

SwiftUI withAnimation 在视图出现之前不会启动

从父母到子元素的 Swift Pass 事件

try 在 iOS 中分发 Flutter 应用程序时出现Invalid Provisioning Profile Signature错误

Swift 共享数据模型在页面之间进行通信.这个怎么运作

光标未显示在 UITextView 中

将图像保存到 Documents 目录并检索邮箱附件

如何更新推送通知服务证书

如何使用 Swift 从assets资源 中加载特定图像

在 Grand Central Dispatch 中使用 dispatch_sync

Swift枚举继承

iOS 10 / Xcode 8 设备上的 NSLog 似乎被截断了?为什么?

为信用卡输入格式化 UITextField,例如 (xxxx xxxx xxxx xxxx)

CoreBluetooth 应用程序到底能在后台做什么?