检测用户点击屏幕 Swift [英] Detect that user tap on screen Swift

查看:47
本文介绍了检测用户点击屏幕 Swift的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在用户点击视图以外的内容后从屏幕中删除 UIVIew.(为了给你形象化,我会上传我的视图草图)[

i want to remove UIVIew from screen after user tap something except that view. (to visualize it for you I will upload sketch of my view)[

]1

并且我想在用户点击此视图中除按钮之外的其他内容后删除蓝色UIview.我应该用什么?

And I want to remove blueUIview after user tap on something except buttons in this view. What should I use?

蓝色 UIVIew 是两个按钮,我想在用户点击背景图像时删除该视图

In blue UIVIew are two buttons and I want to remove that view when user tap on background image

我做了yerpy"让我做的事情,但没有用.

I did what "yerpy" told me to do but it isn't working.

func test(gestureRecognizer: UITapGestureRecognizer) {
    print("test")
}

func setUpBackgroundImageView() {
    self.view.addSubview(backgroundImageView)
    backgroundImageView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    backgroundImageView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
    backgroundImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    backgroundImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    let tap = UITapGestureRecognizer(target: self, action: #selector(test(gestureRecognizer:)))
    backgroundImageView.addGestureRecognizer(tap)
    tap.delegate = self
}

而且我还在 UIGestureRecognizerDelegate 中添加了shouldReceiveTouch 函数.我做错了什么?

And I also addshouldReceiveTouch function to UIGestureRecognizerDelegate. What am I doing wrong?

推荐答案

UIGestureRecognizer 添加到 super view :

正如您所说,您将图像视图作为背景.

As you said you have image view as a background.

 let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped(gestureRecognizer:)))
        imageView.addGestureRecognizer(tapRecognizer)
        tapRecognizer.delegate = self

添加目标操作:

func tapped(gestureRecognizer: UITapGestureRecognizer) {
       // Remove the blue view.
    }

然后在 UITapGestureRecognizerDelegate 中:

extension ViewController : UIGestureRecognizerDelegate {
    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
        if touch.view!.superview!.superclass! .isSubclass(of: UIButton.self) {
            return false
        }
        return true
    }
}

希望能帮到你!

编辑

通过启用:self.view.userInteractionEnabled = true

这篇关于检测用户点击屏幕 Swift的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆