ios - Swift:手势识别器不注册点击

标签 ios swift xcode uigesturerecognizer uitapgesturerecognizer

我在让 UITapGestureRecognizer 注册用户的触摸时遇到了一些麻烦。 showMenu() 函数应该向用户显示部分透明的 blackView,并且我已经实现了手势识别器,以便当用户点击 blackViewdismiss() 被调用并使 View 淡出。

在我的 XCode 控制台中,我没有收到代码中指定的“已关闭”打印消息。

提前致谢!

func showMenu(){
    print("show")

    if let window = UIApplication.sharedApplication().keyWindow{

        blackView.backgroundColor = UIColor(white: 0, alpha: 0.5)

        blackView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(dismiss)))

        window.addSubview(blackView)
        blackView.frame = window.frame
        blackView.alpha = 0

        //Added this line 
        blackView.userInteractionEnabled = true

        UIView.animateWithDuration(0.5){
            self.blackView.alpha = 1
        }
    }
}

func dismiss(){
    print("dismiss")

    UIView.animateWithDuration(0.5){
        self.blackView.alpha = 0
    }
}

编辑:我已检查是否有任何 View 在顶部使用 View 层次结构调试工具窃取点击,但似乎没有任何内容位于 blackView,我还明确设置了 blackView 以允许用户交互。

编辑: View 层次结构调试界面的屏幕截图。

最佳答案

如果将 Alpha View 更改为零,它将停止获取触摸事件。

您可以尝试将 View 的背景颜色更改为透明,而不是更改 View 的 Alpha,这样您的 View 将不可见并且您会收到事件

关于ios - Swift:手势识别器不注册点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38567973/

相关文章:

ios - stringByReplacingOccurrencesOfString 给出奇怪的错误

ios - 在应用 SKPhysicsBody 后检测 SKPhysicsBody 碰撞

ios - 如何在我的代码中重用/导入局部变量到另一个地方?

ios - UIImage renderingMode 彩色图标 -> UIAlertView 上的灰度

c# - 我可以使用 NSUrlSession 在 HTTP header 中允许原始 unicode 吗?

ios - Today 扩展程序或 WatchKit 应用程序是否不赞成调用数据?

ios - iOS 8-uibackgroundModes音频可以是随机音频还是必须是连续音频

ios - swift segue 未声明的类型破坏了代码

ios - 我正在尝试 JSON 解码(Swift)

ios - 如何解决这个问题 "framework not found GRPCClient, linker command failed with exit code 1 (use -v to see invocation) "?