【问题标题】:Swift 3.0 - Hide keyboard for multiple UItextfieldSwift 3.0 - 隐藏多个 UItextfield 的键盘
【发布时间】:2017-04-17 14:03:36
【问题描述】:

我有 5 个 UITextField,每次点击文本字段时,都会出现键盘。当用户触摸文本字段之外时,键盘将隐藏。但是,有一个特殊的 textField 用于 Pop Up。当弹出窗口出现时,前一个文本字段无法隐藏键盘。我如何先隐藏键盘,然后显示弹出窗口?

func textFieldDidBeginEditing(_ textField: UITextField) {
    if textField == self.customerAddress{
        scrollView.setContentOffset(CGPoint(x: 0,y:5), animated: true)

    }
    else if textField == self.district{
        textField.resignFirstResponder()

        scrollView.setContentOffset(CGPoint(x: 0,y:20), animated: true)

        visualEffectView.isHidden = false
        districtpicker.selectRow(3, inComponent: 0, animated: false)

        self.view.addSubview(districtPopUp)
        districtPopUp.center = self.subView.convert(CGPoint(x:subView.frame.size.width/2,y:subView.frame.size.height/3), to: subView)
        districtPopUp.transform = CGAffineTransform.init(scaleX: 1.3, y: 1.3)

        UIView.animate(withDuration: 0.4, animations: {
            self.visualEffectView.alpha = 0.5
            self.districtPopUp.alpha = 1
            self.districtPopUp.transform = CGAffineTransform.identity
        })
    }

}


@IBAction func districtPopDismiss(_ sender: UIButton) {
    scrollView.setContentOffset(CGPoint(x: 0,y:-64), animated: true)
    UIView.animate(withDuration: 0.3, animations: {
        self.districtPopUp.transform = CGAffineTransform.init(scaleX: 1.3, y: 1.3)
        self.visualEffectView.alpha = 1
    }) { (success) in
        self.districtPopUp.removeFromSuperview()
    }
    self.visualEffectView.isHidden = true
}


 func textFieldDidEndEditing(_ textField: UITextField) {
    textField.resignFirstResponder()
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    scrollView.setContentOffset(CGPoint(x: 0,y:-64), animated: true)

    textField.resignFirstResponder()

    return true
}


override func viewDidLoad() {
    super.viewDidLoad()
    let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(CustomerViewController.hideKeyboard))

    subView.addGestureRecognizer(tapGesture)

    visualEffectView.isHidden = true
    self.customerName.delegate = self
    self.customerAddress.delegate = self
    self.customerContact.delegate = self
    self.customerIC.delegate = self
    self.ticketNumber.delegate = self
    self.latitudeGPS.delegate = self
    self.longitudeGPS.delegate = self
    self.district.delegate = self
    // Do any additional setup after loading the view.
}


func hideKeyboard(){
    scrollView.setContentOffset(CGPoint(x: 0,y:-64), animated: true)

    self.customerName.resignFirstResponder()
    self.customerAddress.resignFirstResponder()
    self.customerContact.resignFirstResponder()
    self.customerIC.resignFirstResponder()
    self.ticketNumber.resignFirstResponder()
    self.latitudeGPS.resignFirstResponder()
    self.longitudeGPS.resignFirstResponder()
    self.district.resignFirstResponder()
}

【问题讨论】:

    标签: swift3 popup uitextfield resignfirstresponder


    【解决方案1】:

    您可以调用view.endEditing(true) 而不是在每个文本字段上调用resignFirstResponder(),键盘将隐藏。尝试在负责呈现弹出窗口的逻辑之前调用它。

    【讨论】:

    • 嗨,是的,每次用户结束该 UItextfield 时,我都尝试查看.endEditing(true),但是,我无法事先调用 view.endEditing(true),因为一旦我单击新的uitextfield,键盘再次出现。如何解决这个问题?
    【解决方案2】:

    所有视图控制器都简单易用 swift 3+

    此代码可帮助您在 viewcontrol 的任意位置隐藏触摸键盘

        extension UIViewController {
    
        func hideKeyboardWhenTappedAround() {
            let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
            tap.cancelsTouchesInView = false
            view.addGestureRecognizer(tap)
        }
    
        @objc func dismissKeyboard() {
            view.endEditing(true)
        }
    }
    

    在您的 viewDidLoad 中使用以下代码

    self.hideKeyboardWhenTappedAround()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      • 2021-11-05
      • 2015-01-17
      • 2022-01-23
      • 1970-01-01
      • 2016-05-30
      • 2020-05-26
      相关资源
      最近更新 更多