0
votes

Aller d'un champ de texte à un autre

J'ai quatre uitexfield S, chacun d'un caractère, à des fins de vérification

Ils sont montrés ci-dessous:

(- - - - - - - -)

J'ai besoin d'une façon de sorte que, lorsque l'utilisateur tape dans un champ de texte, il accédera au prochain champ de texte sans qu'il soit nécessaire de cliquer sur l'autre Textfield.

ou, s'il y a une autre façon d'atteindre cette fonctionnalité, laissez-moi savoir


0 commentaires

4 Réponses :


0
votes

Au lieu de prendre tout Textfield en vue, prenez seulement 1 textfield (en code uniquement - non dans la hiérarchie) qui prendra du code entiers de l'utilisateur. et prendre 4 boutons à l'écran - Qui est des titres de Textfield basé sur l'index. Donc, de cette façon, vous pouvez y parvenir.


0 commentaires

0
votes

Bonne question patron J'ai une solution pour votre question. essaye ça... Remarque * Selon votre exigence, effectuez un champ de texte à partir de la méthode TextFieldDidChange ...

class ViewController: UIViewController ,UITextFieldDelegate {
@IBOutlet var text1 : UITextField!
@IBOutlet var text2 : UITextField!
@IBOutlet var text3 : UITextField!
@IBOutlet var text4 : UITextField!

override func viewDidLoad() {
    super.viewDidLoad()
   //TAG FOR IDENTITY
    text1.tag = 1
    text2.tag = 2
    text3.tag = 3
    text4.tag = 4

    text1.becomeFirstResponder()

    text1.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
    text2.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
    text3.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)
    text4.addTarget(self, action: #selector(textFieldDidChange(_:)), for: .editingChanged)


}

@objc func textFieldDidChange(_ sender : UITextField){

    if sender.tag == 1{
        text1.resignFirstResponder()
        text2.becomeFirstResponder()

    }else if sender.tag == 2{
        text2.resignFirstResponder()
        text3.becomeFirstResponder()
    }else if sender.tag == 3{
        text3.resignFirstResponder()
        text4.becomeFirstResponder()
    }else if sender.tag == 4{
        text4.resignFirstResponder()
    }else{
        print("Done")
    }
}


0 commentaires

0
votes

Vous pouvez utiliser 4 champs de texte et passer à la suivante sur l'édition utile qui serait écrit comme: xxx


0 commentaires

0
votes

Gardez d'abord vos champs de texte à l'échelle mondiale accessible dans la classe UIViewController.

Assurez-vous que votre UIViewController est conforme au délégué uitextfieldelegate. p>

puis pour chaque zone de texte, dans votre UIViewController, définissez le délégué: P >

func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString: String) -> Bool {

    var characterCountLimit = 0;

    switch textField {
    case self.ext:
        characterCountLimit = 3
    case self.areaCode:
        characterCountLimit = 3
    case self.middleThree:
        characterCountLimit = 3
    case self.finalFour:
        characterCountLimit = 4
    default:
        characterCountLimit = 1000
    }

    // Determine how many characters in the string after the change happens.
    let startingLength = textField.text?.count ?? 0
    let lengthToAdd = replacementString.count
    let lengthToReplace = range.length

    // This might be called when the user presses backspace, but the count is has reached the limit. Thus, we have to determine the new length.

    let newLength = startingLength + lengthToAdd - lengthToReplace
    // If the user did not press backspace, but continued typing, move to the next field. Take the most recently typed character and enter it as text in the new field and remove it from the old field.
    if newLength > characterCountLimit {
        switch textField {
        case self.ext:
            self.areaCode.text = String(describing: (replacementString.last)!)
            self.areaCode?.becomeFirstResponder()
        case self.areaCode:
            self.middleThree.text = String(describing: (replacementString.last)!)
            self.middleThree?.becomeFirstResponder()
        case self.middleThree:
            self.finalFour.text = String(describing: (replacementString.last)!)
            self.finalFour?.becomeFirstResponder()
        case self.finalFour:
            break
            // Do nothing. This is handled by the editing change delegate method.
        default:
            break
        }
    } else if replacementString.isEmpty && range.lowerBound == 0 && range.upperBound == 1 {
        // If the user is pressing backspace and you want to return to the previous field
        switch textField {
        case self.finalFour:
            self.finalFour.text = ""
            self.middleThree?.becomeFirstResponder()
        case self.middleThree:
            self.middleThree.text = ""
            self.areaCode?.becomeFirstResponder()
        case self.areaCode:
            self.areaCode.text = ""
            self.ext?.becomeFirstResponder()
        default:
            break
        }
    }
    return newLength <= characterCountLimit
}


0 commentaires