1

我目前正在 xcode 中格式化我的文本字段,每 5 个字符添加一个连字符。但是我遇到了很多麻烦,我目前想检查我的 textfields.text.length 然后一旦长度达到 23 个字符,提交按钮就可以按下。到目前为止,如果用户输入 23 个字符并且如果用户决定返回并删除一个字符,那么按钮是可按下的,这在我遇到问题的地方有效,因为我不知道如何更新新的文本长度,所以没有什么可以更新的抓住数字键盘的删除按钮...有人知道该怎么做吗?

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

    NSString *separator = @"-";
    int seperatorInterval = 5;
    NSString *originalString = [regTextField.text stringByReplacingOccurrencesOfString:separator withString:@""];



    if (![originalString isEqualToString:@""] && ![string isEqualToString:@""]) {

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

        if (![lastChar isEqualToString:separator] && modulus == 0) {

            regTextField.text = [regTextField.text stringByAppendingString:separator];
        }
    }
    [self validateTextFields];
    return YES;
}

    -(IBAction) validateTextFields {

    if (regTextField.text.length >= 22){
        [submitButton setEnabled:YES]; //enables submitButton
    } 
    else {
        [submitButton setEnabled:NO]; //disables submitButton

    }

}
4

1 回答 1

1

尝试这样的事情:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    // 添加的任何新字符都作为“text”参数传入
    if (!([text isEqualToString:@""] && range.length == 1) && [textView.text length] >=140 ) {
        返回否;
    }
    // 对于任何其他字符返回 TRUE,以便将文本添加到视图中
    返回是;
}

块在哪里:

([文本 isEqualToString:@""] && range.length == 1)

是检查退格。

捕获数字键盘键盘上的退格键

于 2011-05-02T09:44:30.490 回答