检测用户点击屏幕 Swift [英] Detect that user tap on screen 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屋!