Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 目标C-自动从textfield导航到textfield_Ios_Objective C_Uitextfield - Fatal编程技术网

Ios 目标C-自动从textfield导航到textfield

Ios 目标C-自动从textfield导航到textfield,ios,objective-c,uitextfield,Ios,Objective C,Uitextfield,我需要有3个文本字段,每个文本字段应该只输入1个数字(文本字段的最大长度是1)。 我的问题是,在用户输入数字后,如何从textfield1、textfield2、textfield3自动导航?实现textField:shouldchangeCharactersRange:replacementString:delegate方法。根据在文本字段中输入的文本,您可以在下一个文本字段中调用becomeFirstResponder 记住,你想做的事情有很多复杂因素。如果用户将一组文本粘贴到文本字段中,会

我需要有3个文本字段,每个文本字段应该只输入1个数字(文本字段的最大长度是1)。
我的问题是,在用户输入数字后,如何从textfield1、textfield2、textfield3自动导航?

实现
textField:shouldchangeCharactersRange:replacementString:
delegate方法。根据在文本字段中输入的文本,您可以在下一个文本字段中调用
becomeFirstResponder


记住,你想做的事情有很多复杂因素。如果用户将一组文本粘贴到文本字段中,会发生什么情况?如果用户返回到已经有值的文本字段,会发生什么情况?

实现
文本字段:shouldChangeCharactersRange:replacementString:
委托方法。根据在文本字段中输入的文本,您可以在下一个文本字段中调用
becomeFirstResponder


记住,你想做的事情有很多复杂因素。如果用户将一组文本粘贴到文本字段中,会发生什么情况?如果用户返回到已经有值的文本字段,会发生什么情况?

实现
文本字段:shouldChangeCharactersRange:replacementString:
委托方法。根据在文本字段中输入的文本,您可以在下一个文本字段中调用
becomeFirstResponder


记住,你想做的事情有很多复杂因素。如果用户将一组文本粘贴到文本字段中,会发生什么情况?如果用户返回到已经有值的文本字段,会发生什么情况?

实现
文本字段:shouldChangeCharactersRange:replacementString:
委托方法。根据在文本字段中输入的文本,您可以在下一个文本字段中调用
becomeFirstResponder


记住,你想做的事情有很多复杂因素。如果用户将一组文本粘贴到文本字段中,会发生什么情况?如果用户返回到已经有值的文本字段,会发生什么情况?

您可以使用以下代码:

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {    
  if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){    
     [textField2 becomeFirstResponder];    
  }
}

为其他文本字段添加类似的条件

您可以使用以下代码:

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {    
  if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){    
     [textField2 becomeFirstResponder];    
  }
}

为其他文本字段添加类似的条件

您可以使用以下代码:

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {    
  if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){    
     [textField2 becomeFirstResponder];    
  }
}

为其他文本字段添加类似的条件

您可以使用以下代码:

- (BOOL) textField: (UITextField *)theTextField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {    
  if (theTextField == textField1 && YOUR_CONDITION_TO_COMPLETION_OF_EDITING){    
     [textField2 becomeFirstResponder];    
  }
}

为其他文本字段添加类似条件也

将textfield1、textfield2、textfield3的标记分别设置为0、1和2,然后尝试以下代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ((textField.text.length == 0 && string.length == 1 && [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]]) || string.length == 0) {
       // Try to find next responder
        if (!(string.length == 0))
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        return YES;
    } else {
        if (textField.text.length == 1) {
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        }
        return NO;
    }
}

- (void)changeResponder:(UITextField *)textField {
    NSInteger nextTag = textField.tag + 1;
    UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
    if (nextResponder) {
        // Found next responder, so set it.
        [nextResponder becomeFirstResponder];
    } else {
        // Not found, so remove keyboard.
        [textField resignFirstResponder];
    }
}

将textfield1、textfield2、textfield3的标记分别设置为0、1和2,然后尝试以下代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ((textField.text.length == 0 && string.length == 1 && [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]]) || string.length == 0) {
       // Try to find next responder
        if (!(string.length == 0))
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        return YES;
    } else {
        if (textField.text.length == 1) {
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        }
        return NO;
    }
}

- (void)changeResponder:(UITextField *)textField {
    NSInteger nextTag = textField.tag + 1;
    UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
    if (nextResponder) {
        // Found next responder, so set it.
        [nextResponder becomeFirstResponder];
    } else {
        // Not found, so remove keyboard.
        [textField resignFirstResponder];
    }
}

将textfield1、textfield2、textfield3的标记分别设置为0、1和2,然后尝试以下代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ((textField.text.length == 0 && string.length == 1 && [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]]) || string.length == 0) {
       // Try to find next responder
        if (!(string.length == 0))
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        return YES;
    } else {
        if (textField.text.length == 1) {
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        }
        return NO;
    }
}

- (void)changeResponder:(UITextField *)textField {
    NSInteger nextTag = textField.tag + 1;
    UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
    if (nextResponder) {
        // Found next responder, so set it.
        [nextResponder becomeFirstResponder];
    } else {
        // Not found, so remove keyboard.
        [textField resignFirstResponder];
    }
}

将textfield1、textfield2、textfield3的标记分别设置为0、1和2,然后尝试以下代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if ((textField.text.length == 0 && string.length == 1 && [[NSCharacterSet decimalDigitCharacterSet] isSupersetOfSet:[NSCharacterSet characterSetWithCharactersInString:string]]) || string.length == 0) {
       // Try to find next responder
        if (!(string.length == 0))
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        return YES;
    } else {
        if (textField.text.length == 1) {
            [self performSelector:@selector(changeResponder:) withObject:textField afterDelay:0.2];
        }
        return NO;
    }
}

- (void)changeResponder:(UITextField *)textField {
    NSInteger nextTag = textField.tag + 1;
    UIResponder *nextResponder = [textField.superview viewWithTag:nextTag];
    if (nextResponder) {
        // Found next responder, so set it.
        [nextResponder becomeFirstResponder];
    } else {
        // Not found, so remove keyboard.
        [textField resignFirstResponder];
    }
}

谷歌
becomeFirstResponder
google
becomeFirstResponder
google
becomeFirstResponder
google
becomeFirstResponder