1
我不明白为什么我的水龙头手势不起作用。黑色取消窗口显示正常,但是当我点击黑色窗口时,都不会调用handleCancel()函数。有任何想法吗?斯威夫特3代表,协议 - TapGesture不工作
import UIKit
protocol BlackCancelWindowDelegate {
func handleCancel()
}
class BlackCancelWindow: NSObject {
let blackView = UIView()
var delegate: BlackCancelWindowDelegate?
var frame: CGRect?
override init() {
super.init()
}
func showCancelWindow() {
if let window = UIApplication.shared.keyWindow {
blackView.backgroundColor = UIColor(white: 0, alpha: 0.5)
blackView.frame = frame ?? window.frame
blackView.alpha = 0
window.addSubview(blackView)
let tapToDismiss = UITapGestureRecognizer(target: self, action: #selector(handleCancel))
tapToDismiss.numberOfTapsRequired = 1
blackView.addGestureRecognizer(tapToDismiss)
UIView.animate(withDuration: 0.5,animations: {
self.blackView.alpha = 1
}, completion: nil)
}
}
func handleCancel() {
print("BlackCancelWindow cancel")
UIView.animate(withDuration: 0.5, animations: {
self.blackView.alpha = 0
}, completion: nil)
delegate?.handleCancel()
}
}
class ViewController: UIViewController, BlackCancelWindowDelegate {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func showCancelWindow(_ sender: Any) {
let cancelWindow = BlackCancelWindow()
cancelWindow.delegate = self
cancelWindow.showCancelWindow()
}
func handleCancel() {
print("Delegate cancel")
}
}
的StackOverflow要我一些更多的细节添加到我的问题,但我不知道把还有什么在这里。
我试着向我的blackView添加一个按钮,该按钮也不会响应点击。出于某种原因,我觉得我的blackView不会读取任何手势。 – jwasher
尝试将'userInteractionEnabled'属性设置为true – KrishnaCA
尝试过。没有骰子。尽管我确实找到了解决方案。将在下面添加。 – jwasher