1

ユーザーがDF-DJSLのようなデータを入力する必要があるので、これをコードに入れます。

theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

ただし、残念ながら、CAPSで最初に文字を入力すると、ハイフンを入力した直後の文字が小文字になり、残りはCAPSに戻るため、次のような出力が生成されます(ユーザーがハイフンを入力した後にShiftボタンを手動でタップしない限り) ):DF-dJSL

どうすればこれを修正できますか?

どうもありがとう

4

1 に答える 1

7

使用しているSDKについては言及していませんが、3.0以降では、希望する動作が見られます。

とはいえ、デリゲートからtextFieldDidEndEditingメソッドを使用して編集を終了するときは、いつでもテキストを大文字に変更できます。

- (void)textFieldDidEndEditing:(UITextField *)textField {
    NSString *textToUpper = [textField.text uppercaseString];   
    [theTextField setText:textToUpper];
}

または、テキストフィールドが変更されたときに通知を設定することで、入力中にテキストを変更できます。

// setup the UITextField
{
    theTextField.delegate = self;
    theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    [theTextField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
}

UISearchBarとは異なり、UITextFieldはtextDidChangeを実装しないため、この方法で行う必要があります。このようなもの、おそらく?

- (void)textFieldDidChange:(UITextField *)textField {
    NSRange range = [textField.text rangeOfString : @"-"];
    if (range.location != NSNotFound) {
        theTextField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
    }
}
于 2010-09-04T14:14:54.240 に答える