UITextField - dönüş düğmesi olayını yakala


101

Bir kullanıcının UITextField'ı düzenlerken "geri dön" klavye düğmesine bastığını nasıl tespit edebilirim? Kullanıcı "geri dön" düğmesine bastığında klavyeyi kapatmak için bunu yapmam gerekiyor.

Teşekkürler.

Yanıtlar:


212
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

Temsilciyi storyboard'a yerleştirmeyi unutmayın ...

görüntü açıklamasını buraya girin


47
Görünüm denetleyicinizin metin alanının temsilcisi olarak ayarlandığından emin olun.
zekel

1
Teşekkür ederim. Benim için delegeyi üzerinden ayarlıyorum self.yourTextField.delegate = self;. Birden çok metin alanı bile çalışır.
haxpor

@Praxiteles Bu, artık temsilci gerektirmeden storyboard'da yapılabilir, lütfen aşağıdaki yanıtı kontrol edin.
Blake Lockley

51

Yetkilendirme gerekli değildir, işte tek satırlık:

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

Ne yazık ki bunu Storyboard'unuzda doğrudan yapamazsınız (eylemleri Storyboard'da yayan kontrole bağlayamazsınız), ancak bunu bir aracı eylem yoluyla yapabilirsiniz.


1
Sadece temsilci yöntemi EVET döndürürse (metin alanını terk etmeden önce) UIControlEventEditingDidEndOnExitolayın gönderildiğini belirtmek istiyorum textFieldShouldReturn:.
alex-i

Sen yok olması heyete uygulamaktır. Ama belki yaparsanız, YESbu yöntem için geri dönmeniz gerekir .
mxcl

10

SWIFT 3.0

override open func viewDidLoad() {
    super.viewDidLoad()    
    textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}

enterPressed () işlevinde aradığınız tüm davranışları yerleştirin

func enterPressed(){
    //do something with typed text if needed
    textField.resignFirstResponder()
}

8

Artık bunu, gönderilen 'Çıkışta Bitti' olayını kullanarak film şeridi olarak yapabilirsiniz.

Görünüm denetleyici alt sınıfınızda:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

İstediğiniz metin alanı için film şeridinizde:

görüntü açıklamasını buraya girin


3

UITextFieldDelegate kullanan Swift sürümü:

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

2

Swift 5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

-1
- (BOOL)textFieldShouldReturn:(UITextField *)txtField 
{
[txtField resignFirstResponder];
return NO;
}

Enter düğmesine tıklandığında bu delege yöntemi çağrılır. Bu delege yönteminden dönüş düğmesini yakalayabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.