【问题标题】:UITextField NSString length problems while formatting NSString格式化 NSString 时出现 UITextField NSString 长度问题
【发布时间】:2011-05-01 21:18:39
【问题描述】:

我已经为此工作了几天,我的文本字段发生了一些嗡嗡声......现在到了我需要退后一步的地步,希望有人拥有一双新的眼睛可以了解情况。

基本上我正在做的是将一个 20 个字符的字符串格式化为 5 个组,因为用户在每 5 个字符后键入一个连字符会弹出一个字符串,这很有效。

我有一个提交按钮,在输入第 20 个字符之前无法使用,这也有效,但它变得疯狂!如果你删除一个字符,提交按钮仍然有效..然后你又删除一个字符,它不起作用......我很茫然,因为我的 if 语句条件不像我应该指定的那样工作== 23 个字符,您必须按其中一个键 24 次才能进入该语句。这没有逻辑意义。

无论如何,如果您能帮助我解决第一个问题,那就太好了,那么如果您对第二个问题有任何想法,那就太好了。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    NSString *separator = @"-";
    int seperatorInterval = 5; //how many chars between each hyphen
    NSString *originalString = [regTextField.text stringByReplacingOccurrencesOfString:separator withString:@""];


    if (textField.text.length == 23 && range.length == 0){
        return NO; // return NO to not change text
    }       
    if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) {

        NSString *lastChar = [regTextField.text substringFromIndex:[regTextField.text length] - 1];
        int modulus = [originalString length] % seperatorInterval;

        if (![lastChar isEqualToString:separator] && modulus == 0) {
                regTextField.text = [regTextField.text stringByAppendingString:separator];
        }
    }
    [self validateTextFields];
    return YES; //Keep accepting input from the user
}

//Validating text field to see if Submit button can be pressed or not
-(IBAction) validateTextFields {
    NSString *intString = [NSString stringWithFormat:@"%d", regTextField.text.length];
    NSLog(@"Starting %@", intString);
    if (regTextField.text.length < 22){
        [submitButton setEnabled:NO]; //enables submitButton
    } 
    else {
        regTextField.text = [regTextField.text substringToIndex:22];
        [submitButton setEnabled:YES]; //disables submitButton
    }
    intString = [NSString stringWithFormat:@"%d", regTextField.text.length];
    NSLog(@"Done %@", intString);
}

【问题讨论】:

    标签: iphone if-statement nsstring uitextfield


    【解决方案1】:

    这个if语句需要加=签到

    if (regTextField.text.length <= 22){
    

    或者只是将数字更改为 23,它应该可以工作

    if (regTextField.text.length < 23){
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多