7

すべての入力が大文字になるように、UITextField の autocapitalizationType プロパティを設定できます。シミュレーターでは (Mac のキーボードではなく、シミュレーターのキーパッドを実際にタップすると) 正常に動作しますが、デバイスでは動作しませんか? すべて小文字のままです。

UICatalog デモでは、textFieldNormal メソッドに追加しました。

textFieldNormal.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;

UITextField の実際の autocapitalizationType を表示するために、デリゲートも追加しました。

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
    NSLog( @"textField.autocapitalizationType=%d", textField.autocapitalizationType );
}

3 (=UITextAutocapitalizationTypeAllCharacters) は適切に表示されますが、タップしたものはすべて小文字のままです。私は何が欠けていますか?

4

2 に答える 2

20

どうやらこれはデバイスの一般設定の問題です: 設定 -> 一般 -> キーボード -> 自動大文字化をオンにして、textField.autocapitalizationType の設定をすべて大文字にする必要があります。それ以外の場合、プロパティの設定は明らかに無視されます。スイッチを入れると、すべてが期待どおりに機能します。

于 2013-07-27T16:16:05.837 に答える
0

テキストフィールドデリゲートで次のようなことを試すことができます。

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    if (range.length == 0) { // not deleting , but adding a char        
        textField.text = [textField.text stringByAppendingString:[string uppercaseString]];
        return NO;
    }

    return YES;
}

これは、テキストの最後に記号を挿入しようとした場合にのみ機能します。真ん中のテキストで遊びたい場合は、遊ぶことができます

範囲.場所

また、毎回最後に移動するため、カーソルの位置をいじる必要があります...

これが誰かに役立つことを願っています。

于 2014-03-05T11:56:27.153 に答える