首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关闭基于背景点击的视图

关闭基于背景点击的视图
EN

Stack Overflow用户
提问于 2017-06-30 05:05:58
回答 1查看 444关注 0票数 1

我有一台UIView

代码语言:javascript
复制
var transparentBackground = UIView()

当一个按钮被点击时,视图被赋予一些属性

代码语言:javascript
复制
 @IBAction func UserViewImage(_ sender: UIButton) -> Void {

        self.transparentBackground = UIView(frame: UIScreen.main.bounds)
        self.transparentBackground.backgroundColor = UIColor(white: 0.0, alpha: 0.4)
        UIApplication.shared.keyWindow!.addSubview(self.transparentBackground)
        self.opaqueView = self.setupOpaqueView()
        self.transparentBackground.addSubview(opaqueView)
        UIApplication.shared.keyWindow!.bringSubview(toFront: self.transparentBackground)
        self.view.bringSubview(toFront: transparentBackground)

    }

当单击另一个按钮时,该视图将被完全关闭,并具有一个名为removeAnimate的函数。

代码语言:javascript
复制
func handleOKButtonTapped(_ sender: UIButton){
    removeAnimate()

}

然而,我希望当背景被点击(视图)时,视图被完全关闭,就像按钮被点击时一样,所以我这样做了:

代码语言:javascript
复制
 override func viewDidLoad() {
        super.viewDidLoad()

            let gestureRecognizer = UITapGestureRecognizer(target: self, action:  #selector(removeAnimate))
            self.transparentBackground.addGestureRecognizer(gestureRecognizer)
}

但是它不工作,我不确定我在做什么wrong.Not,transparentBackground视图中有一个子视图。

代码语言:javascript
复制
 self.transparentBackground.addSubview(opaqueView)
EN

回答 1

Stack Overflow用户

发布于 2017-06-30 05:14:05

这就是我是如何实现的:

代码语言:javascript
复制
viewDidLoad() {

    let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(close))

            gestureRecognizer.cancelsTouchesInView = false

            gestureRecognizer.delegate = self

            view.addGestureRecognizer(gestureRecognizer)
}

func close() {

            dismiss(animated: true, completion: nil)

        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44834991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档