【发布时间】:2019-08-08 14:02:03
【问题描述】:
有一个简单的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()
}
输出:
button0Pressed
button1Pressed
那么,在按下button0 后如何防止viewcontrollers 快速触摸事件?
【问题讨论】:
-
你的问题是什么?
-
可以尝试添加view.MultipleTouchEnable = false
-
@pooja 不行,不是
pressing the two buttons together而是pressing two buttons between very short inverval。 -
你可以使用按钮或手势识别器,但不能同时使用吗?
标签: ios swift cocoa-touch uikit uicontrolevents