Swift如何在所有uiTextfield上辞职第一响应者

ppr*_*lon 21 uitextfielddelegate swift

我想使用第一响应者辞职uitextfield.我可以通过放入uitextfields一个数组来完成这个,但我想避免使用该数组.辞职应该发生在所有类型的uiTextField上,如何做到这一点.

这很好用

    class ViewController: UIViewController, UITextFieldDelegate {
        @IBOutlet weak var text: UITextField!
        @IBOutlet weak var textFieldtwo: UITextField!

        var textField = [UITextField]()

        override func viewDidLoad() {
            super.viewDidLoad()
            self.textField = [text,textFieldtwo]

            for item in textField {
                item.delegate = self
            }
        }

        override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
            print("text")

            for item in textField {
                item.resignFirstResponder()
            } 
        }
    }
Run Code Online (Sandbox Code Playgroud)

Hja*_*mar 26

或者只是使用更全球化的方法.(Swift 3.0)

UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil);
Run Code Online (Sandbox Code Playgroud)

当它辞职当前的第一响应者时,这将关闭任何活动字段.祝你好运!

  • 使用这个安全吗?我的意思是,苹果会批准使用此代码提交到应用程序商店的应用程序吗? (2认同)

Khu*_*ong 21

你可以试试这个:

for textField in self.view.subviews where textField is UITextField {
    textField.resignFirstResponder()
}
Run Code Online (Sandbox Code Playgroud)

但是,如果你只是想取消键盘returnkeyboard或屏幕上的任何地方攻不使用touchesBegan

你可以尝试这个:

// For pressing return on the keyboard to dismiss keyboard
func textFieldShouldReturn(textField: UITextField) -> Bool {
    for textField in self.view.subviews where textField is UITextField {
        textField.resignFirstResponder()
    }
    return true
}
Run Code Online (Sandbox Code Playgroud)

...

func hideKeyboard() {
    view.endEditing(true)
}
Run Code Online (Sandbox Code Playgroud)

并将此添加到您的viewDidLoad:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)
Run Code Online (Sandbox Code Playgroud)


Ahm*_*ale 18

一种更简单的方法是通过以下方式结束对包含UITextFields的UIView的编辑:

view.endEditing(true)
Run Code Online (Sandbox Code Playgroud)

  • "view.endEditing(true)"非常适合触摸,但它不适用于"textFieldShouldReturn" (3认同)

Anu*_*pta 7

现在在 Swift 3 中,最简单的方法是

方法 1: 在按下 'return' 键时调用。

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
 {
 textField1.resignFirstResponder()
 textField2.resignFirstResponder()
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

方法 2: 在按下 'return' 键时调用。

func textFieldShouldReturn(_ textField: UITextField) -> Bool 
    {
    self.view.endEditing(true)
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

方法 3:全局方法写入视图确实加载

self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
Run Code Online (Sandbox Code Playgroud)

注意:不要忘记添加这个。否则它不起作用。

UIGestureRecognizerDelegate, UITextFieldDelegate
Run Code Online (Sandbox Code Playgroud)

我希望它对你有用:)