it-swarm.com.ru

скрыть клавиатуру для текстового поля на языке программирования Swift

У меня мало опыта в Objective-C. Я хочу скрыть клавиатуру для текстового поля, используя язык программирования Swift.

Я тоже пробовал это

func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
{
    return true;
}

Но метод не срабатывает, когда я нажимаю клавишу возврата. Кому-нибудь повезло с этим?

22
user2869947

Я думаю, что проблема с настройкой делегата.

Пожалуйста, установите текстовое поле Delegate для вашего 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;
    }

Надеюсь, что это решит вашу проблему.

68
Ravi_Parmar

Просто переопределите метод UIViewController под названием "touchesBegan" и установите для endEditing значение true. Именно так:

override func touchesBegan(touches: NSSet!, withEvent event: UIEvent!) {
    self.view.endEditing(true)
}
9
matiasdim

Чтобы скрыть клавиатуру при нажатии кнопки, вам необходимо использовать следующую функцию.

self.view.endEditing(true)

Это работает, когда кнопка нажата. 

Надеюсь, это поможет кому-то там. 

8
Ronaldoh1

Вот так:

  1. Добавьте текстовое поле в ваш вид
  2. Создать новый файл Swift
  3. Установите этот новый файл в качестве класса для этого конкретного представления
  4. Добавьте TextField к вашему представлению
  5. Создайте выход для текстового поля (мой называется "txtField"!)
  6. Замените любой код в файле 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
        }
      }
    
    1. Попробуйте, будьте счастливы и скажите спасибо!
6
LAOMUSIC ARTS
  • Добавьте 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;
    }
    

    при этом ваша клавиатура начнет отключаться, касаясь за пределами текстового поля так же, как и нажатием клавиши возврата.

2
Satnam Sync
UIApplication.sharedApplication().sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, forEvent:nil)
1
neoneye

Простым способом скрыть клавиатуру просто переопределить UIView «метод touchBegan». Поэтому, когда вы нажимаете в любом месте на клавиатуре вида, скрыть .. Вот пример кода .. (Обновленный код Swift 3.0)

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
{
   self.view.endEditing(true)
}
1
NiravS

Как сказал @spfursich: лучший способ - когда пользователь прикоснется к клавиатуре, клавиатура исчезнет. Вот код:

override func viewDidLoad() {
    super.viewDidLoad()

    var tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DismissKeyboard")
    self.view.addGestureRecognizer(tap)
}

func DismissKeyboard(){
    self.view.endEditing(true)
}
1
Ajumal

Сначала вам нужно установить delegate для вашего текстового поля, затем вам нужно включить resignFirstResponder(), чтобы скрыть клавиатуру при нажатии кнопки возврата на клавиатуре.

 func textFieldShouldReturn(textField: UITextField!) -> Bool // called when 'return' key pressed. return NO to ignore.
 {
   textField .resignFirstResponder()
   return true;
 }
0
Rahul Patel

Здесь я решил проблему: когда открывается клавиатура и вид скрывается за клавиатурой .... то время нам нужно динамически изменять ограничения пользовательского интерфейса , чтобы сделать весь вид видимым. В моем случае я изменяю 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()
    }
}
0
Rahul Raina

Вы можете попробовать этот код, чтобы ключ возврата выполнял код.

func textFieldShouldReturn(textField: UITextField) -> Bool{
    textField.resignFirstResponder()
    performAction()
    return true;
}

func performAction(){

//execute code for your action inside this function

}

Надеюсь, это поможет вам.

0
Bigfoot11

Теперь в Swift 3 самые простые методы

Метод 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: Глобальный метод Write in view сделал загрузку

self.view.addGestureRecognizer(UITapGestureRecognizer(target: self.view, action: #selector(UIView.endEditing(_:))))

Примечание: Не забудьте добавить это. Другие мудрые его не работают.

UIGestureRecognizerDelegate, UITextFieldDelegate

Я надеюсь, что это будет работать для вас :)

0
Anup Gupta

Вы также можете сделать так: Добавить событие «Закончился ли при выходе» из инспектора соединений вашего TextField И подключить его к методу из соответствующего ViewController

В моем примере я подключаю его к методу, который называется «окончен»

объявите отправителя как UITextField, а затем вызовите sender.resignFirstResponder (); Вот так: 

@IBAction func ended (sender: UITextField){ sender.resignFirstResponder(); }
0
Nikita Kurtin