How to move cursor from one text field to another automatically in swift ios programmatically?

后端 未结 13 2114
抹茶落季
抹茶落季 2020-12-05 08:11
    func textFieldDidBeginEditing(textField: UITextField) {
    scrlView.setContentOffset(CGPointMake(0, textField.frame.origin.y-70), animated: true)


    if(textF         


        
13条回答
  •  执笔经年
    2020-12-05 08:46

    Objective c and Swift 4.2 to move the cursor from one field to another automatically in OTP(One Time Password) fields

    Here i am taking one view controller ]1

    Then give the Tag values for each TextFiled.Those related reference images are shown below

    Enter tag value for first textfiled --> 1,2ndTextfiled ---->2,3rd TextFiled --->3 4rth TextFiled---->4

    Then assign Textfiled Delegates and write below code and see the magic

     - (BOOL)textField:(UITextField *)textField 
    shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString 
     *)string
     {
     if ((textField.text.length < 1) && (string.length > 0))
     {
        NSInteger nextTag = textField.tag + 1;
        UIResponder* nextResponder = [textField.superview 
      viewWithTag:nextTag];
        if (! nextResponder){
            [textField resignFirstResponder];
        }
        textField.text = string;
        if (nextResponder)
            [nextResponder becomeFirstResponder];
        return NO;
    
     }else if ((textField.text.length >= 1) && (string.length == 0)){
        // on deleteing value from Textfield
    
        NSInteger prevTag = textField.tag - 1;
        // Try to find prev responder
        UIResponder* prevResponder = [textField.superview 
     viewWithTag:prevTag];
        if (! prevResponder){
            [textField resignFirstResponder];
        }
        textField.text = string;
        if (prevResponder)
            // Found next responder, so set it.
            [prevResponder becomeFirstResponder];
    
        return NO;
    }
    return YES;
    

    }

    swift4.2 version code

    func textField(_ textField: UITextField, shouldChangeCharactersIn range: NSRange, replacementString string: String) -> Bool {
    
    
    
        if textField.text!.count < 1 && string.count > 0 {
            let tag = textField.tag + 1;
            let nextResponder = textField.superview?.viewWithTag(tag)
    
            if   (nextResponder != nil){
                textField.resignFirstResponder()
    
            }
            textField.text = string;
            if (nextResponder != nil){
                nextResponder?.becomeFirstResponder()
    
            }
            return false;
    
    
        }else if (textField.text?.count)! >= 1 && string.count == 0 {
            let prevTag = textField.tag - 1
            let prevResponser = textField.superview?.viewWithTag(prevTag)
              if (prevResponser != nil){
                textField.resignFirstResponder()
            }
            textField.text = string
            if (prevResponser != nil){
                prevResponser?.becomeFirstResponder()
    
            }
             return false
        }
    
    
        return true;
    
    }
    

提交回复
热议问题