2016-02-11 43 views
5

Questa domanda non viene duplicata da questi:Come posso abilitare/disabilitare manualmente la chiave di ritorno della tastiera in Swift?

Ho due TextFields.

@IBOutlet weak var textField1: UITextField! 
@IBOutlet weak var textField2: UITextField! 
  • textField1 ha la Successivo pulsante mi piace il tasto Invio;

  • textField2 ha il pulsante Go come Return Key;

textField1

textField2

desidero attivare il pulsanteGo del secondo TextField solo se entrambi TextFields non sono vuoti.

Ho provato a utilizzare someTextField.enablesReturnKeyAutomatically con TextFieldDelegate, ma non ha funzionato.

Grazie per l'aiuto.

+0

Come hai impostato 'textField1': s il prossimo risponditore come' textField2? '(il precedente ha" Avanti "invece di" Ritorno "). Solo 'textField1.returnKeyType = UIReturnKeyType.Next'? – dfri

+0

Sì, penso che questo sia complicato (esempio: 'textField1' è vuoto ma' textField2' non è: il pulsante 'Go' sarà abilitato). Ho visto alcuni hack non documentati per l'impostazione del pulsante di ritorno come abilitato/disabilitato, ma non sono stato in grado di adattarli a swift. Inoltre, vorremmo evitare gli hack non documentati. Vedi [questo thread]. – dfri

+0

Ok questa è la mia prova finale qui sotto, ho bisogno di andare a letto ora. Questa versione finale disabilita la seconda visualizzazione del testo finché la prima vista di testo è vuota. Successivamente, il tasto "Vai" del secondo pulsante visualizza la seconda vista del testo finché è vuota. – dfri

risposta

5

Sotto: textField2 è disattivato finchè textField1 è vuoto. Se quest'ultimo non è vuota, ci consentono textField2, ma attivare il pulsante Go solo se textField2 è non vuota (via .enablesReturnKeyAutomatically proprietà),

/* ViewController.swift */ 
import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 
    @IBOutlet weak var textField1: UITextField! 
    @IBOutlet weak var textField2: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     // text field delegates 
     textField1.delegate = self 
     textField2.delegate = self 

     // set return key styles 
     textField1.returnKeyType = UIReturnKeyType.Next 
     textField2.returnKeyType = UIReturnKeyType.Go 

     // only enable textField2 if textField1 is non-empty 
     textField2.enabled = false 

     // only enable 'go' key of textField2 if the field itself is non-empty 
     textField2.enablesReturnKeyAutomatically = true 
    } 

    // UITextFieldDelegate 
    func textFieldShouldReturn(textField: UITextField) -> Bool { 

     if (textField1.text?.isEmpty ?? true) { 
      textField2.enabled = false 
      textField.resignFirstResponder() 
     } 
     else if textField == textField1 { 
      textField2.enabled = true 
      textField2.becomeFirstResponder() 
     } 
     else { 
      textField.resignFirstResponder() 
     } 

     return true 
    } 
} 

è la seguente:

enter image description here