Swift 如何在所有 uiTextfield 上退出第一响应者
Swift how to resign first responder on all uiTextfield
我想对所有 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()
}
}
}
一种更简单的方法是结束对包含 UITextFields 的 UIView 的编辑,方法是:
view.endEditing(true)
你可以试试这个:
for textField in self.view.subviews where textField is UITextField {
textField.resignFirstResponder()
}
但是,如果您只想关闭键盘,请按 keyboard
上的 return
或在不使用 [=16] 的情况下点击屏幕上的任意位置=]
你可以试试这个:
// 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
}
...
func hideKeyboard() {
view.endEditing(true)
}
并将此添加到您的 viewDidLoad
:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)
或者只是使用更全局的方法。 (Swift 3.0)
UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil);
这将关闭任何活动字段,因为它会辞去当前第一响应者的职务。
祝编码顺利!
现在在Swift3中,最简单的方法是
方法一:
当按下 'return' 键时调用。
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField1.resignFirstResponder()
textField2.resignFirstResponder()
return true;
}
方法 2: 在按下 'return' 键时调用。
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
self.view.endEditing(true)
return true;
}
方法 3: 全局方法 Write in view did load
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
注意:不要忘记添加这个。否则它不起作用。
UIGestureRecognizerDelegate, UITextFieldDelegate
希望对你有用:)
带有工具栏按钮的 resignFirstResponder Swift4 ##
你可以试试这个:
1. 检查文本域委托
class CoursesViewController: UIViewController,UITextFieldDelegate {
创建一个 TextField 变量: var currentTextField:UITextField!
在您的 TextField
中创建 "done" & "cancel" 按钮工具栏
func addDoneCancel(_ textField : UITextField) {
curentTextField = textField
// ToolBar
let toolBar = UIToolbar()
toolBar.barStyle = .default
toolBar.isTranslucent = true
toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1)
toolBar.sizeToFit()
// Adding Button ToolBar
let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(CoursesViewController.doneClick))
let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)
let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(CoursesViewController.cancelClick))
toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false)
toolBar.isUserInteractionEnabled = true
textField.inputAccessoryView = toolBar
}
4.工具栏按钮的动作
@objc func doneClick(){
curentTextField.resignFirstResponder()
}
@objc func cancelClick(){
curentTextField.resignFirstResponder()
}
5.UItextField 委托
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
curentTextField = textField
addDoneCancel(textField)
return true
}
func textFieldDidBeginEditing(_ textField: UITextField) {
//delegate method
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
//delegate method
return true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//delegate method
textField.resignFirstResponder()
return true
}
Swift 4:
如果您有 IBOutlets:
_ = [textFiledOne, textFiledTwo, textFiledThree].map() { [=10=].resignFirstResponder() }
我想对所有 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()
}
}
}
一种更简单的方法是结束对包含 UITextFields 的 UIView 的编辑,方法是:
view.endEditing(true)
你可以试试这个:
for textField in self.view.subviews where textField is UITextField {
textField.resignFirstResponder()
}
但是,如果您只想关闭键盘,请按 keyboard
上的 return
或在不使用 [=16] 的情况下点击屏幕上的任意位置=]
你可以试试这个:
// 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
}
...
func hideKeyboard() {
view.endEditing(true)
}
并将此添加到您的 viewDidLoad
:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)
或者只是使用更全局的方法。 (Swift 3.0)
UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil);
这将关闭任何活动字段,因为它会辞去当前第一响应者的职务。 祝编码顺利!
现在在Swift3中,最简单的方法是
方法一: 当按下 'return' 键时调用。
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField1.resignFirstResponder()
textField2.resignFirstResponder()
return true;
}
方法 2: 在按下 'return' 键时调用。
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
self.view.endEditing(true)
return true;
}
方法 3: 全局方法 Write in view did load
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
注意:不要忘记添加这个。否则它不起作用。
UIGestureRecognizerDelegate, UITextFieldDelegate
希望对你有用:)
带有工具栏按钮的 resignFirstResponder Swift4 ##
你可以试试这个:
1. 检查文本域委托
class CoursesViewController: UIViewController,UITextFieldDelegate {
创建一个 TextField 变量:
var currentTextField:UITextField!
在您的 TextField
中创建 "done" & "cancel" 按钮工具栏func addDoneCancel(_ textField : UITextField) { curentTextField = textField // ToolBar let toolBar = UIToolbar() toolBar.barStyle = .default toolBar.isTranslucent = true toolBar.tintColor = UIColor(red: 92/255, green: 216/255, blue: 255/255, alpha: 1) toolBar.sizeToFit() // Adding Button ToolBar let doneButton = UIBarButtonItem(title: "Done", style: .plain, target: self, action: #selector(CoursesViewController.doneClick)) let spaceButton = UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil) let cancelButton = UIBarButtonItem(title: "Cancel", style: .plain, target: self, action: #selector(CoursesViewController.cancelClick)) toolBar.setItems([cancelButton, spaceButton, doneButton], animated: false) toolBar.isUserInteractionEnabled = true textField.inputAccessoryView = toolBar }
4.工具栏按钮的动作
@objc func doneClick(){
curentTextField.resignFirstResponder()
}
@objc func cancelClick(){
curentTextField.resignFirstResponder()
}
5.UItextField 委托
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
curentTextField = textField
addDoneCancel(textField)
return true
}
func textFieldDidBeginEditing(_ textField: UITextField) {
//delegate method
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
//delegate method
return true
}
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
//delegate method
textField.resignFirstResponder()
return true
}
Swift 4:
如果您有 IBOutlets:
_ = [textFiledOne, textFiledTwo, textFiledThree].map() { [=10=].resignFirstResponder() }