Скрыть клавиатуру для текстового поля в быстром языке программирования
У меня мало опыта в Objective-C. Я хочу скрыть клавиатуру для текстового поля, используя язык программирования Swift.
Я также пробовал это
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
return true;
}
Но метод не срабатывает, когда я нажимаю return. Кому-нибудь повезло с этим?
Ответы
Ответ 1
Я думаю, что проблема связана с настройкой делегата.
Пожалуйста, установите текстовое поле "Делегировать" в ваш ViewController, как показано ниже.
class ViewController: UIViewController,UITextFieldDelegate {
а затем создайте IBOutlet для вашего текстового поля, такого как
@IBOutlet var txtTest : UITextField = nil
убедитесь, что он подключен к вашему текстовому полю на вашем представлении в раскадровке.
наконец, установите свой делегат, используя
txtTest.delegate=self
Мы почти закончили. Теперь поместите эту функцию делегата в ваш класс.
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
textField.resignFirstResponder()
return true;
}
Надеюсь, что это решит вашу проблему.
Ответ 2
Просто переопределите метод UIViewController под названием "touchhesBegan" и установите endEditing в true. Точно так же:
override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
self.view.endEditing(true)
}
Ответ 3
Чтобы скрыть клавиатуру при нажатии кнопки, вам необходимо использовать следующую функцию.
self.view.endEditing(true)
Это срабатывает при нажатии кнопки.
Надеюсь, что это поможет кому-то.
Ответ 4
Здесь мы идем:
- Добавить текстовое поле в ваш вид
- Создайте новый файл Swift
- Установите этот новый файл как класс для этого конкретного представления
- Добавить TextField в ваш вид
- Создайте Outlet для текстового поля (my называется "txtField"!)
-
Замените любой код в файле Swift Class следующим:
import Foundation
import UIKit
//01 create delegation
class MyViewController2: UIViewController,UITextFieldDelegate {
@IBOutlet weak var txtField: UITextField!=nil
override func viewDidLoad() {
super.viewDidLoad()
// additional setup after loading the view
//02 set delegate to textfield
txtField.delegate = self
}
//03 textfield func for the return key
func textFieldShouldReturn(textField: UITextField) -> Bool {
txtField.resignFirstResponder()
return true;
}
//textfield func for the touch on BG
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
txtField.resignFirstResponder()
self.view.endEditing(true)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
//dispose of any resources that can be recreated
}
}
- Попробуй, будьте счастливы и скажите спасибо!
Ответ 5
-
Добавьте UITextFieldDelegate в объявление класса:
класс ViewController: UIViewController, UITextFieldDelegate
-
Подключить текстовое поле или записать его программно
@IBOutlet слабый var userText: UITextField!
-
установите ваш контроллер представления, поскольку делегат текстовых полей в поле зрения загрузил:
override func viewDidLoad() {
super.viewDidLoad()
self.userText.delegate = self
}
-
Добавьте следующую функцию
func textFieldShouldReturn(userText: UITextField!) -> Bool {
userText.resignFirstResponder()
return true;
}
со всем этим ваша клавиатура начнет отклоняться, коснувшись внешнего поля, а также нажав клавишу возврата.
Ответ 6
Как и @spfursich сказал: "Лучший способ, когда пользователь прикасается где-нибудь над клавиатурой, клавиатура исчезнет. Вот код:
override func viewDidLoad() {
super.viewDidLoad()
var tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")
self.view.addGestureRecognizer(tap)
}
func DismissKeyboard(){
self.view.endEditing(true)
}
Ответ 7
UIApplication.sharedApplication().sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, forEvent:nil)
Ответ 8
Простым способом скрытия клавиатуры просто переопределить метод "touchBegan" UIView. Поэтому, когда вы нажимаете любое место, где на клавиатуре вид скрывается.
вот пример кода.. (Swift 3.0 Обновленный код)
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?)
{
self.view.endEditing(true)
}
Ответ 9
Сначала вам нужно установить delegate
для вашего текстового поля, тогда вам нужно включить resignFirstResponder()
, чтобы скрыть клавиатуру, когда нажмите кнопку возврата keybaord.
func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
textField .resignFirstResponder()
return true;
}
Ответ 10
Вы можете попробовать использовать этот код для выполнения кода возврата.
func textFieldShouldReturn(textField: UITextField) -> Bool{
textField.resignFirstResponder()
performAction()
return true;
}
func performAction(){
//execute code for your action inside this function
}
Надеюсь, это поможет вам.
Ответ 11
Вы также можете сделать следующее:
добавить событие "Закончено при выходе" из инспектора соединений вашего TextField
и подключить его к методу из соответствующего ViewController
В моем примере я подключаю его к методу 'finished'
объявить отправителя как UITextField, а затем вызвать sender.resignFirstResponder();
Вот так:
@IBAction func ended (sender: UITextField){ sender.resignFirstResponder(); }
Ответ 12
Здесь я решил проблему, что, когда клавиатура открывается, а представление скрывается за клавиатурой.... , в это время нам нужно динамически менять ограничения пользовательского интерфейса чтобы сделать весь вид видимым. В моем случае я динамически меняю bottonConstraint UITextField
.
Итак, вот полный код. У меня есть один UITextView
и UITextField
на UIViewController
для работы только для тестирования...
import UIKit
class ViewController: UIViewController, UITextViewDelegate, UITextFieldDelegate {
@IBOutlet weak var textView: UITextField!
@IBOutlet weak var textField: UITextView!
/*Height Constraint for textField*/
@IBOutlet weak var bottom: NSLayoutConstraint!
var defaultHeight:CGFloat = 0.0;
override func viewDidLoad() {
super.viewDidLoad()
defaultHeight = bottom.constant;
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillShow:"), name:UIKeyboardWillShowNotification, object: nil);
NSNotificationCenter.defaultCenter().addObserver(self, selector: Selector("keyboardWillHide:"), name:UIKeyboardWillHideNotification, object: nil);
}
override func resignFirstResponder() -> Bool {
textView.resignFirstResponder();
textField.resignFirstResponder();
return true;
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
resignFirstResponder()
print("touched began")
}
func textViewDidEndEditing(textView: UITextView) {
resignFirstResponder()
print("text view did end editing")
}
func textViewShouldEndEditing(textView: UITextView) -> Bool {
resignFirstResponder()
print("text view should end editing")
return true;
}
func textFieldShouldReturn(textField: UITextField) -> Bool {
print("text field should return")
resignFirstResponder()
return true;
}
func textFieldDidEndEditing(textField: UITextField) {
resignFirstResponder()
print("did end editing")
}
func keyboardWillShow(notification: NSNotification) {
print("keyboard will show.............")
if let keyboardSize = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKey] as? NSValue)?.CGRectValue() {
let a = keyboardSize.height;
self.bottom.constant = a + defaultHeight;
self.view.updateConstraints();
}
}
func keyboardWillHide(nofication:NSNotification)
{
print("keyboard will hide................")
bottom.constant = defaultHeight;
self.view.updateConstraints();
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Ответ 13
В Swift 3/4/5 самые простые методы:
Метод 1: вызывается при нажатии клавиши возврата.
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
textField1.resignFirstResponder()
textField2.resignFirstResponder()
return true;
}
Метод 2: вызывается при нажатии клавиши возврата.
func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
self.view.endEditing(true)
return true;
}
Метод 3: Глобальный метод При записи в вид загружен
self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))
Примечание: Не забудьте добавить это. Другие мудрые не работают.
UIGestureRecognizerDelegate, UITextFieldDelegate
Я надеюсь, что это будет работать для вас :)