禁用整个UIView可以通过以下方法实现:
func disableView(_ view: UIView) {
view.isUserInteractionEnabled = false
view.subviews.forEach { disableView($0) }
}
let view = UIView()
disableView(view)
let overlayView = UIView(frame: view.bounds)
overlayView.backgroundColor = UIColor.clear
overlayView.isUserInteractionEnabled = true
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap))
overlayView.addGestureRecognizer(tapGesture)
view.addSubview(overlayView)
@objc func handleTap(sender: UITapGestureRecognizer) {
// Do nothing
}
这两种方法都可以实现禁用整个UIView的目的。第一种方法更加简单,只需要调用一个函数即可。而第二种方法则需要创建一个透明的视图并添加到原始视图上,但它可以提供更多的控制,例如可以捕获触摸事件并执行自定义操作。
领取专属 10元无门槛券
手把手带您无忧上云