Существует простой UIViewController
с двумя кнопками, при каждом нажатии кнопки полноэкранный режим будет добавляться к представлению viewcontorller
, поскольку его размер такой же, как у viewcontroller
.
Мы знаем, что если представление перекрывается со своим родительским видом, родительское представление не может ответить ни на одно событие.
Но если я нажимаю button0
, а затем очень быстро нажимаю button1
, представление добавляется к viewcontorller
, и также вызывается событие касания второй кнопки.
Вот мой код :
@IBAction func button0Pressed(_ sender: Any) {
print(#function)
let view0 = UIView(frame: view.bounds)
view0.backgroundColor = UIColor.gray
let tap0 = UITapGestureRecognizer(target: self, action: #selector(tap0(_:)))
view0.addGestureRecognizer(tap0)
view.addSubview(view0)
}
@objc func tap0(_ gestureRecognizer: UITapGestureRecognizer) {
print(#function)
let view = gestureRecognizer.view
view?.removeFromSuperview()
}
@IBAction func button1Pressed(_ sender: Any) {
print(#function)
let view1 = UIView(frame: view.bounds)
view1.backgroundColor = UIColor.lightGray
let tap1 = UITapGestureRecognizer(target: self, action: #selector(tap1(_:)))
view1.addGestureRecognizer(tap1)
view.addSubview(view1)
}
@objc func tap1(_ gestureRecognizer: UITapGestureRecognizer) {
print(#function)
let view = gestureRecognizer.view
view?.removeFromSuperview()
}
Out Put:
button0Pressed
button1Pressed
Итак, как я могу предотвратить событие быстрого прикосновения viewcontroller
после нажатия button0
?