1

現在、xcode でテキストフィールドをフォーマットしています。5 文字ごとにハイフンを追加しています。しかし、私は現在 textfields.text.length を確認したいという多くの問題を抱えており、長さが 23 文字に達すると、送信ボタンを押すことができます。これまでのところ、ユーザーが23文字を入力し、ユーザーが戻って1文字を削除することを決定した場合にボタンを押すことができる場合、新しいテキストの長さを更新する方法がわからないため、これは問題があります。テンキーの削除ボタンをキャッチするには... 誰かこれを行う方法を知っていますか?

   - (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 に答える