it-swarm.com.de

tastatur für Textfeld in der Programmiersprache Swift ausblenden

Ich habe wenig Erfahrung mit Objective-C. Ich möchte die Tastatur für ein Textfeld mit der Programmiersprache Swift ausblenden.

Ich habe das auch probiert

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

Die Methode wird jedoch nicht ausgelöst, wenn ich die Eingabetaste drücke. Hat jemand Glück damit?

22
user2869947

Ich denke, das Problem liegt in der Einstellung des Delegierten.

Bitte setzen Sie das Textfeld Delegate so auf Ihren ViewController

class ViewController: UIViewController,UITextFieldDelegate {

und erstellen Sie dann das IBOutlet für Ihr Textfeld wie folgt

@IBOutlet var txtTest : UITextField = nil

stellen Sie sicher, dass es mit Ihrem Textfeld in Ihrer Ansicht im Storyboard verbunden ist.

endlich seinen Delegierten mit 

txtTest.delegate=self

Wir sind fast fertig. Platzieren Sie nun diese Delegatfunktion in Ihrer Klasse.

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

Hoffe, das wird dein Problem lösen.

68
Ravi_Parmar

Überschreiben Sie einfach die UIViewController-Methode namens "touchesBegan" und setzen Sie endEditing auf true. Genau wie dieser:

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

Um die Tastatur beim Drücken einer Taste auszublenden, müssen Sie die folgende Funktion verwenden.

self.view.endEditing(true)

Dies funktioniert, wenn eine Taste gedrückt wird. 

Hoffe, das hilft jemandem da draußen. 

8
Ronaldoh1

Auf geht's:

  1. Fügen Sie Ihrer Ansicht ein Textfeld hinzu
  2. Erstellen Sie eine neue Swift-Datei
  3. Legen Sie diese neue Datei als Klasse für diese bestimmte Ansicht fest
  4. Fügen Sie Ihrer Ansicht ein Textfeld hinzu
  5. Erstellen Sie ein Outlet für das Textfeld (my heißt "txtField"!)
  6. Ersetzen Sie beliebigen Code in der Swift Class-Datei durch Folgendes:

    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. Probieren Sie es aus, seien Sie glücklich und sagen Sie Danke!
6
LAOMUSIC ARTS
  • Fügen Sie der Klassendeklaration UITextFieldDelegate hinzu:

    klasse ViewController: UIViewController, UITextFieldDelegate

  • Verbinden Sie das Textfeld oder schreiben Sie es programmgesteuert

    @IBOutlet schwach var userText: UITextField!

  • legen Sie Ihren Ansichts-Controller fest, wenn die Delegierten der Textfelder in der Ansicht geladen wurden:

    override func viewDidLoad() {
    super.viewDidLoad()
    self.userText.delegate = self
    }
    
  • Fügen Sie die folgende Funktion hinzu

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

    bei all dem wird Ihre Tastatur durch Berühren außerhalb des Textfelds sowie durch Drücken der Eingabetaste geschlossen.

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

Auf einfache Weise können Sie die Tastatur ausblenden, indem Sie die UIView-Methode "touchBegan" überschreiben. Wenn Sie also irgendwo tippen, wo sich die Tastatur in der Ansicht verbirgt, ist hier der Beispielcode.

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

Wie @spfursich sagte: Am besten verschwindet die Tastatur, wenn der Benutzer irgendwo über der Tastatur berührt. Hier ist der Code:

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

Zuerst müssen Sie delegate für Ihr Textfeld einstellen, dann müssen Sie resignFirstResponder() angeben, um die Tastatur auszublenden, wenn Sie die Return-Taste von keybaord drücken.

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

Hier habe ich das Problem gelöst, dass wenn Tastatur geöffnet wird und die Ansicht hinter der Tastatur versteckt wird .... zu diesem Zeitpunkt müssen wir die UI-Einschränkungen dynamisch ändern , um die gesamte Ansicht sichtbar zu machen. In meinem Fall ändere ich die bottonConstraint der UITextField dynamisch.

Hier geht also der komplette Code. Ich habe eine UITextView und UITextField auf UIViewController, an der ich gerade testen muss ...

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

Sie können diesen Code ausprobieren, um die "Return" -Taste auszuführen.

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

func performAction(){

//execute code for your action inside this function

}

Hoffe das kann dir helfen.

0
Bigfoot11

In Swift 3 sind dies die einfachsten Methoden

Methode 1: aufgerufen, wenn die 'Return'-Taste gedrückt wurde.

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

Methode 2: aufgerufen, wenn die 'Return'-Taste gedrückt wurde.

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

Methode 3: Globale Methode Write in view wurde geladen

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

Hinweis: Vergiss nicht, dies hinzuzufügen. Ansonsten ist es keine Arbeit.

UIGestureRecognizerDelegate, UITextFieldDelegate

Ich hoffe es klappt für dich :)

0
Anup Gupta

Sie können dies auch wie folgt tun: Ereignis "Did end on exit" vom Verbindungsinspektor Ihres TextField Hinzufügen und mit der Methode aus dem entsprechenden ViewController verbinden

In meinem Beispiel verbinde ich es mit einer Methode namens 'ended'

deklarieren Sie den Sender als UITextField und rufen Sie dann sender.resignFirstResponder (); auf. 

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