UITextField dönüş tuşuna bir eylem nasıl eklenir?


91

Görünümümde bir düğme ve metin metin alanı var. metin alanına tıkladığımda bir klavye beliriyor ve metin alanına yazabiliyorum ve ayrıca aşağıdaki düğmeyi tıklayarak klavyeyi kapatabiliyorum:

[self.inputText resignFirstResponder];

Şimdi klavyenin dönüş tuşunu etkinleştirmek istiyorum. klavye klavyesine basacağım zaman kaybolacak ve bir şey olacak. Bunu nasıl yapabilirim?


Yanıtlar:


186

"Self" in UITextFieldDelegateinputText'e abone olduğundan emin olun ve aşağıdakilerle başlatın:

self.inputText.delegate = self;

Aşağıdaki yöntemi "self" e ekleyin:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

Veya Swift ile:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}

11

Swift 3.0'da uzatma stili ile

İlk olarak, metin alanınız için temsilci ayarlayın.

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

Ardından UITextFieldDelegategörünüm denetleyicinizin uzantısına uyun

extension YourViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
}

4

Diğer cevaplar doğru çalışsa da, aşağıdakileri yapmayı tercih ederim:

ViewDidLoad () 'da ekle

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

ve işlevi tanımlayın

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}

-1

Bir klavye bitti düğmesine dokunulduğunda UITextField'den gönderilen "birincilActionTriggered" UIEvent için Hedef Eylem UIKit mekanizmasını kullanın.

textField.addTarget(self, action: Selector("actionMethodName"), for: .primaryActionTriggered)
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.