2015-05-22 26 views
8

Funkcja textFieldShouldReturn nie jest w ogóle wywoływana: nie ma błędów, ale klawiatura w ogóle nie odpowiada.Dlaczego nie jest wywoływana funkcja textFieldShouldReturn?

Moja sprawa różni się od How to hide keyboard in swift on pressing return key?, ponieważ w moim przypadku nic się nie dzieje, a inne sprawy są w Objective-C.

Oto mój kod:

import UIKit 

class ViewController: UIViewController { 

    @IBOutlet var textField: UITextField! 

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

textField jest wylot do pola tekstowego w moim ujęć. Próbowałem też self.endEditing zamiast resignFirstResponder.

Odpowiedz

27

Reszta ta odpowiedź jest nadal bardzo przydatne, a ja go tam zostawić, ponieważ może potencjalnie pomóc inne askers ... ale tutaj, tęskniłem oczywisty problem z tym konkretnym przykładzie ...

Nie wywołujemy resignFirstResponder w polu tekstowym. Dzwonimy do kontrolera widoku. Musimy nazwać na polu tekstowym, tak zmodyfikować kod, aby wyglądać tak:

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

UITextField zadzwoni tylko właściwość textFieldShouldReturn na obiekcie, który jest jego delegat.

Możemy rozwiązać ten problem programowo dodając metodę viewDidLoad ustawić, że:

override func viewDidLoad() { 
    super.viewDidLoad() 
    self.textField.delegate = self 
} 

Ale możemy także ustawić to za pomocą serii ujęć w czasie kompilacji.

prawym przyciskiem myszy na polu tekstowym, aby sprawdzić i zobaczyć, czy delegat został ustawiony:

enter image description here

Jeśli koło obok delegate jest nieobsadzone, nie mamy ustawić delegata na nasz UITextField jeszcze.

Aby ustawić delegata, najedź na ten krąg. Zmieni się na znak plus. Teraz kliknij i przeciągnij do kontrolera widoku, któremu chcesz przekazać pole tekstowe (kontroler widoku, którego częścią jest pole tekstowe).

enter image description here

Kiedy już odpowiednio podłączyć kontroler widoku jako delegat, menu powinno wyglądać tak:

enter image description here

0

jestem uczestniczących w kursie Swift 4 Udemy, i instruktor powiedział, aby dodać klasę UITextFieldDelegate dla ViewController oprócz Cntrl - przeciągając od textField do przycisku ViewController i wybierając delegata.

importu UIKit

class ViewController: UIViewController, UITextFieldDelegate { 

    func textFieldShouldReturn(textField: UITextField) -> Bool { 
     textField.resignFirstResponder() 
     return true 
    } 
} 
Powiązane problemy