Swift, как уволить первого ответчика на все uiTextfield
Я хотел бы использовать отставку первого ответчика на всем uitextfield. им удалось завершить это, поместив поля uitext в массив, но я хотел избежать использования массива. отставка должна произойти со всеми типами 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()
}
}
}
Ответы
Ответ 1
Вы можете попробовать следующее:
for textField in self.view.subviews where textField is UITextField {
textField.resignFirstResponder()
}
Но если вы просто хотите отклонить клавиатуру, нажав return
на keyboard
или нажав в любом месте экрана, не используя 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
}
...
func hideKeyboard() {
view.endEditing(true)
}
И добавьте это в свой viewDidLoad
:
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(hideKeyboard))
view.addGestureRecognizer(tapGesture)
Ответ 2
Или просто используйте более глобальный подход. (Swift 3.0)
UIApplication.shared.sendAction(#selector(UIApplication.resignFirstResponder), to: nil, from: nil, for: nil);
Это отклонит любое активное поле, поскольку оно уходит в отставку с текущего первого ответчика.
Коды удачи!
Ответ 3
Более простой подход мог бы закончить редактирование в UIView, содержащем UITextFields, сказав:
view.endEditing(true)
Ответ 4
Теперь в Swift 3 самые простые методы:
Метод 1:
когда нажата клавиша "возврат".
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 загрузил
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
Примечание. Не забудьте добавить это. Другие мудрые его не работают.
UIGestureRecognizerDelegate, UITextFieldDelegate
Я надеюсь, что это сработает для вас:)
Ответ 5
resignFirstResponder с кнопками панелей инструментов Swift4 ##
Вы можете попробовать следующее:
1. Проверьте делегат текстового поля
class CoursesViewController: UIViewController,UITextFieldDelegate {
-
создать TextField var: var currentTextField:UITextField!
-
создайте кнопки "done" и "cancel" toolBar в вашем TextField
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
}