在多个 UIImageView 上点击手势
one tap gesture on multiple UIImageView
我有 2 个 UIImageView 和一个 tapGestureRecognizer。
override func viewDidLoad() {
// Do any additional setup after loading the view.
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(cameraTapped(tapGestureRecognizer:)))
cameraUIImageView.isUserInteractionEnabled = true
cameraUIImageView.addGestureRecognizer(tapGestureRecognizer)
plus1UIImageView.isUserInteractionEnabled = true
plus1UIImageView.addGestureRecognizer(tapGestureRecognizer)
//
}
我只能点击第二个UIImageView,也就是plus1UIImageView。
为什么?
您只能将手势识别器添加到一个视图,因此当您将其添加到第二个视图时,它会从第一个视图中删除。更深入的回答在这里:
Can you attach a UIGestureRecognizer to multiple views?
A UIGestureRecognizer
只能用于单个视图。您正在为两个视图使用相同的对象。试试这个。
override func viewDidLoad() {
// Do any additional setup after loading the view.
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(cameraTapped(tapGestureRecognizer:)))
cameraUIImageView.isUserInteractionEnabled = true
cameraUIImageView.addGestureRecognizer(tapGestureRecognizer)
let tapGestureRecognizer2 = UITapGestureRecognizer(target: self, action: #selector(cameraTapped(tapGestureRecognizer:)))
plus1UIImageView.isUserInteractionEnabled = true
plus1UIImageView.addGestureRecognizer(tapGestureRecognizer2)
}
正如所有回答所述,您只能将手势识别器添加到一个视图。尽管如果您的两个图像视图都在同一个超级视图中,您可以将点击手势添加到他们的超级视图并访问其子视图。您可以使用 hitTest:
方法检查点击的子视图并参考点击的图像视图。查看我之前的答案 。如果您有任何疑问,请在评论中告诉我。
我有 2 个 UIImageView 和一个 tapGestureRecognizer。
override func viewDidLoad() {
// Do any additional setup after loading the view.
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(cameraTapped(tapGestureRecognizer:)))
cameraUIImageView.isUserInteractionEnabled = true
cameraUIImageView.addGestureRecognizer(tapGestureRecognizer)
plus1UIImageView.isUserInteractionEnabled = true
plus1UIImageView.addGestureRecognizer(tapGestureRecognizer)
//
}
我只能点击第二个UIImageView,也就是plus1UIImageView。
为什么?
您只能将手势识别器添加到一个视图,因此当您将其添加到第二个视图时,它会从第一个视图中删除。更深入的回答在这里:
Can you attach a UIGestureRecognizer to multiple views?
A UIGestureRecognizer
只能用于单个视图。您正在为两个视图使用相同的对象。试试这个。
override func viewDidLoad() {
// Do any additional setup after loading the view.
super.viewDidLoad()
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(cameraTapped(tapGestureRecognizer:)))
cameraUIImageView.isUserInteractionEnabled = true
cameraUIImageView.addGestureRecognizer(tapGestureRecognizer)
let tapGestureRecognizer2 = UITapGestureRecognizer(target: self, action: #selector(cameraTapped(tapGestureRecognizer:)))
plus1UIImageView.isUserInteractionEnabled = true
plus1UIImageView.addGestureRecognizer(tapGestureRecognizer2)
}
正如所有回答所述,您只能将手势识别器添加到一个视图。尽管如果您的两个图像视图都在同一个超级视图中,您可以将点击手势添加到他们的超级视图并访问其子视图。您可以使用 hitTest:
方法检查点击的子视图并参考点击的图像视图。查看我之前的答案