如果我们在背景中的任意位置轻按popView中的popView,如何删除popView

我在ViewController中创建了一个带有文本字段和按钮的popView。如果我单击按钮,则popView出现,并且我能够在文本字段中输入文本并提交正在工作,并且如果我在视图中的任意位置点击,我也可以删除popView,但是在这里,我想如果我在popView中的任意位置点击我不想关闭popView,请在代码中帮助我。

这是我的代码:

 import UIKit

 class PopUPViewController: UIViewController {

@IBOutlet weak var popView: UIView!
@IBOutlet weak var inputField: UITextField!
@IBOutlet weak var textLabel: UILabel!
override func viewDidLoad() {
    super.viewDidLoad()
    popView.isHidden = true
    // Do any additional setup after loading the view.
}

@IBaction func butnact(_ sender: Any) {
    view?.backgroundColor = UIColor(white: 1,alpha: 0.9)
    popView.isHidden = false
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self,action: #selector(PopUPViewController.dismissView))
    view.addGestureRecognizer(tap)
}

@objc func dismissView() {
    self.popView.isHidden = true
    view?.backgroundColor = .white
}

@IBaction func sendButton(_ sender: Any) {
    self.textLabel.text = inputField.text
}
}

在我的代码中,如果我点击视图中的任意位置,即使我同时点击popView也将其删除,popView也将被删除,我不需要,如果我点击popView,则不必删除popView。

请帮助我输入代码

china_lwj 回答:如果我们在背景中的任意位置轻按popView中的popView,如何删除popView

您可以override triggered或{{中的new touchdetected touchesBegan 方法。 1}}。通过使用此view,您可以检查是否触摸了特定的window

尝试这样

method
,

这不是我要设计的方式,但是要解决您面临的问题,您需要调整dismissView方法,以便仅在水龙头在popView之外时才关闭视图。

为此,请修改您的选择器,以将发送方(UITapGestureRecogniser)作为参数包括在内:

    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self,action: #selector(PopUPViewController.dismissView(_:)))

然后在您的函数中接受该参数并测试水龙头是否在视图内部,如果是,请不要关闭视图:

@objc func dismissView(_ sender: UITapGestureRegognizer) {
  let tapPoint = sender.location(in: self.popView)
  if self.popView.point(inside: tapPoint,with: nil)) == false {
    self.popView.isHidden = true
    view?.backgroundColor = .white
  }
}

,

您的Popup视图位于viewcontroller的父视图内,这就是为什么在点击popview时您的popview也被隐藏的原因。 因此,为了避免仅在后台添加视图并将其命名为bgView或您想要的任何名称,然后将其替换为视图。它将正常工作。

代码:

@IBOutlet weak var bgView: UIView!//Add this new outlet
@IBOutlet weak var popView: UIView!
@IBOutlet weak var inputField: UITextField!
@IBOutlet weak var textLabel: UILabel!
@IBOutlet weak var submitButton: UIButton!
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view,typically from a nib.
    popView.isHidden = true

}



@IBAction func butnAct(_ sender: Any) {
    bgView.backgroundColor = UIColor(white: 1,alpha: 0.9)//change view to bgView[![enter image description here][1]][1]
    popView.isHidden = false
    let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self,action: #selector(ViewController.dismissView))
    bgView.addGestureRecognizer(tap)//change view to bgView
}

@objc func dismissView() {
    self.popView.isHidden = true
    bgView.backgroundColor = .white//change view to bgView
}

@IBAction func sendButton(_ sender: Any) {
    self.textLabel.text = inputField.text
}

screen shot of view

本文链接:https://www.f2er.com/3110645.html

大家都在问