-->

需要的UITextField取5位[重复](Require a UITextField to tak

2019-10-21 13:52发布

这个问题已经在这里有一个答案:

  • 设置为UITextField的最大字符长度 44回答

我有一个的UITextField设置为显示数字键盘。 我如何要求用户输入5位数字组成?

我捅来,看见我应该使用shouldChangeCharactersInRange但我不太了解如何实现这一点。

Answer 1:

当用户离开文本字段我只用这一个按钮/验证

if ([myTextField.text length] != 5){

//Show alert or some other warning, like a red text

}else{
 //Authorized text, proceed with whatever you are doing
}

现在,如果你想算个字符当用户打字时,你可能会在使用viewDidLoad

[myTextfield addTarget: self action@selector(textfieldDidChange:) forControlEvents:UIControlEventsEditingChanged]

-(void)textFieldDidChange:(UITextField*)theTextField{
 //This happens every time the textfield changes
}

请确保如果您需要更多帮助,请在评论的问题:)



Answer 2:

让自己的代表UITextFieldDelegate并实现以下几点:

- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

        NSUInteger oldLength = [textField.text length];
        NSUInteger replacementLength = [string length];
        NSUInteger rangeLength = range.length;

        NSUInteger newLength = oldLength - rangeLength + replacementLength;

        BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;

        //desired length less than or equal to 5
        return newLength <= 5 || returnKey;
    }


Answer 3:

- (BOOL) textField: (UITextField *)textField shouldChangeCharactersInRange: (NSRange)range replacementString: (NSString *)string {

    NSString *newText = [textField.text stringByReplacingCharactersInRange: range withString: string];

    return [self validateText: newText]; // Return YES if newText is acceptable 

}


文章来源: Require a UITextField to take 5 digits [duplicate]