我在让 UITapGestureRecognizer 注册用户的触摸时遇到了一些麻烦。 showMenu() 函数应该向用户显示部分透明的 blackView,并且我已经实现了手势识别器,以便当用户点击 blackView,dismiss() 被调用并使 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/