从上海华卸下与gestureRecognizer
问题描述:
我创建blurEffectView这样:从上海华卸下与gestureRecognizer
var blurEffectView: UIVisualEffectView{
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = self.view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
return blurEffectView
}
然后一个tapGestureRecognizer添加到效果图。
let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.dismissBlurView))
self.blurEffectView.addGestureRecognizer(tapGestureRecognizer)
self.mapView.addSubview(self.blurEffectView)
这里是驳回它的功能:
func dismissBlurView(){
blurEffectView.removeFromSuperview()
}
我显然失去了一些东西,因为当我在模糊视图点击dismissBlurView不叫。
答
试试这个
class YourViewController: UIViewController, UIGestureRecognizerDelegate{
tapGestureRecognizer.delegate = self
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}
}
答
尝试,因为它的工作对我来说,使用此代码。我已经更改了块声明,并在viewDidLoad中设置了块的外部大小。
var blurEffectView: UIVisualEffectView = {
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
return blurEffectView
}()
//设置UIVisualEffectView框架viewDidLoad中
self.blurEffectView.frame = self.view.bounds
self.blurEffectView.addGestureRecognizer(UITapGestureRecognizer.init(target: self, action: #selector(self.dismissBlurView(gesture:))))
self.view.addSubview(self.blurEffectView)
func dismissBlurView(gesture: UITapGestureRecognizer){
blurEffectView.removeFromSuperview()
}
+0
虽然这段代码可能回答这个问题,但提供关于如何和/或为什么它解决问题的附加上下文会提高答案的长期价值。 – thewaywewere
+0
@thewaywewere感谢您的建议,我一定会照顾它的。 –
它可能被MapView的手势识别器覆盖。尝试将blurView放置在mapView上,而不是mapView的子视图。作为父视图的子视图。 – JustinM
这没有奏效,而且我还是需要它作为mapView的超级视图,因为在模糊效果视图的顶部有另一个视图,它是不应该模糊的父视图的子视图。 – Latcie
只是使用bringtofront到你的blurview –