首页 文章

Swift:Gesture Recognizer没有注册Taps

提问于
浏览
2

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

在我的XCode控制台中,我没有收到代码中指定的打印消息“dismissed” .

提前致谢!

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
    }
}

EDIT: 我似乎是blackView以上的任何东西,我还明确设置了blackView以允许用户交互 .

EDIT: “视图层次结构调试”界面的屏幕截图 .

2 回答

  • 4

    如果将Alpha视图更改为零,则会停止获取触摸事件 .

    您可以尝试将视图的背景颜色更改为透明,而不是更改视图的alpha,这样您的视图将不可见,并且您可以获得事件

  • 1

    将其添加到您的代码中 . 它识别是否有1次触摸然后你可以调用你的解雇方法 .

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    
        let touch = touches.first?.tapCount
        if touch == 1 {
            // Call Dismiss
            dismiss()
        }
    }
    

相关问题