gpt4 book ai didi

ios - removeFromSuperview() 突然不再工作

转载 作者:行者123 更新时间:2023-11-29 01:59:08 26 4
gpt4 key购买 nike

我有一个从 xib 加载的 UIView 子类,如下所示:

// The xib custom view
private var view: UIView!

override init(frame: CGRect) {
super.init(frame: frame)
xibSetup()
}

required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}

/**
* Setting up the view
*/
private func xibSetup() {
view = loadViewFromNib()

// use bounds not frame or it'll be offset
view.frame = bounds

// Make the view stretch with containing view
view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight

// Adding custom subview on top of our view (over any custom drawing > see note below)
addSubview(view)

}

/**
* Loading the custom view from a nib
*/
private func loadViewFromNib() -> UIView {
// Load the nib
let bundle = NSBundle(forClass: self.dynamicType)
let nib = UINib(nibName: "EditImageView", bundle: bundle)

// Assumes UIView is top level and only object in PapControls.xib file
let view = nib.instantiateWithOwner(self, options: nil)[0] as! UIView
return view
}

override func layoutSubviews() {
super.layoutSubviews()
blurView = UIVisualEffectView(effect: UIBlurEffect(style: .Dark))
blurView.frame = self.bounds
blurView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "tappedOnBlur:"))
}

在此 View 中,我有一个名为 blurView 的 View ,我将其添加到 UITextView 后面。它像这样添加到 View 中:

self.view.insertSubview(blurView, belowSubview:textOverlay)

当我在 blurView 上使用 UITapGestureRecognizer 时,应该使用以下代码删除 blurView:

func tappedOnBlur(tapGesture: UITapGestureRecognizer?) {
blurView.removeFromSuperview()
}

最初,我将这个子类作为 subview 添加到 View 中,并且效果很好。但是,我现在使用的是 UIViewController,其 view 设置为子类,因此我可以使用 UINavigationController 将其推送到 View 中。现在我已完成此操作,如果我尝试调用 tappedOnBlur:,它不会将其从 View 中删除。奇怪的是,如果我使用 blurView.isDescendantOfView(self.view) 它返回 false(在我尝试删除它之前和之后)。

有人知道这是怎么回事吗?谢谢。

最佳答案

刚刚发现这是blurView 的加载方式。我已将代码移动到 layoutSubviews() 设置blurView 中,并且工作正常。我以为我可以在 UIViewController 中像 viewDidLoad() 一样使用 layoutSubviews() 但显然不是

关于ios - removeFromSuperview() 突然不再工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30548081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com