【发布时间】:2019-08-05 11:52:59
【问题描述】:
我有一个UIView,每次我在另一个视图中按下按钮时都会显示
@IBOutlet weak var view1: UIView!
@IBOutlet weak var view2: UIView!
@IBAction func showView(_ sender: Any) {
view2.isHidden = false
}
我想要的是添加一个点击手势,允许我在每次点击视图外部时隐藏 view2,并且由于这些视图是可拖动的,我希望第二个视图在隐藏时不可点击(这样如果我touch 在我看来,我不会冒险移动它。 这是我尝试过的:
var gesture : UITapGestureRecognizer? override func viewDidLoad() { super.viewDidLoad() NotificationCenter.default.addObserver(self, selector: #selector(closeView), name: NSNotification.Name("CloseView"), object: nil) gesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.closeView)) } @objc func closeView() { if view2.isHidden == false { view2.isUserInteractionEnabled = true view2.isHidden = false self.view.removeGestureRecognizer(gesture!) } else { view2.isHidden = true view2.isUserInteractionEnabled = true self.view.addGestureRecognizer(gesture!) } }let closeTapGesture = UITapGestureRecognizer(target: view, action: #selector(getter: view2.isHidden) view.addGestureRecognizer(closeTapGesture)
这些都不行,怎么办?
【问题讨论】:
-
确保在代码中某处调用 closeView() 函数。
-
我在 viewDidLoad 中调用了它我没有把它放在我的代码中对不起,但它不起作用...
-
我不清楚您想做什么,但是您是否尝试在隐藏视图时将 userInteractionEnabled 设置为 false
-
@Gihan 我希望点击手势在我点击屏幕的任何部分时隐藏视图,另外我希望 UIView 在隐藏时不可点击。是的,我试过了,不行……
-
但在代码中,您在 else 中将其设置为 true
标签: ios swift uiview uikit uigesturerecognizer