Appleのカレンダーアプリを開きます。新しい予定に名前を付けると、最初の文字が自動的に大文字になります。これを行うために「修正」スタイルのスワップアウトは使用されません。
私の一生の間、私はこの行動を再現することはできません。 IBでは、UITextFieldの大文字の使用をWordに設定しましたが、まったく効果がないようです。修正をオンにすると、Wordが大文字のバージョンに置き換えられますが、これは正しくありません。
キーを押すたびにチェックして、これをコードで処理する必要がありますか?これはおそらく些細なことですが、ユーザーが手動で「shift」を使用して大文字を無効にしたり、削除してキーを再入力したりする場合など、見逃してしまうすべてのコーナーケースについて心配している場合は、大文字にしないでください。 。
または、Shiftキーを押しながらテキストフィールドをロードする方法はありますか?これはそれを実装する一般的な方法ですか?
シミュレーターを使用していますか、それとも実際のデバイスを使用していますか?シミュレーターを使用している場合、ケーシングはコンピューターの物理キーボードのシフト状態とCapsLock状態を尊重します。
大文字をWordに設定するとこれが行われるはずなので、他の問題が発生しています。テストしている実際のUITextFieldで切り替えられていることを確認しますか?どういうわけかコードでそれをオーバーライドしていないと確信していますか?プログラムで次のように設定できます。
[myTextField setAutocapitalizationType:UITextAutocapitalizationTypeWords];
これが無視される例外もあります( docs ごと):
一部のキーボードタイプは、自動大文字化をサポートしていません。具体的には、keyboardTypeプロパティの値がUIKeyboardTypeNumberPad、UIKeyboardTypePhonePad、またはUIKeyboardTypeNamePhonePadに設定されている場合、このオプションは無視されます。
これはあなたに当てはまりますか?
アプリでこれを確認したところ、デフォルトで大文字の使用がすでに行われていました。動作はアプリケーションコードではなく、グローバルなiPhone設定によって決まります。
iOS設定を開始します。 Generalに移動し、次にKeyboardに移動します。ここで、ユーザーには"Auto-Capitalization"のオプションがあります。オフですか?
私の場合はオンになっていたので、アプリとカレンダーにこの機能がありました。オフにすると、ユーザーがこの機能を望まないと判断したため、両方のアプリにこの機能がありません。
大文字の使用を無効にする
textField.autocapitalizationType = UITextAutocapitalizationTypeNone;
すべての文字を大文字にするには
textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
文の最初の文字を大文字にするには
textField.autocapitalizationType = UITextAutocapitalizationTypeSentences;
センテンスのすべての単語の最初の文字を大文字にする
textField.autocapitalizationType = UITextAutocapitalizationTypeWords;
特定のキーボードは大文字のタイプを無視します
一部のキーボードタイプは、自動大文字化をサポートしていません。具体的には、keyboardTypeプロパティの値がUIKeyboardTypeNumberPad、UIKeyboardTypePhonePad、またはUIKeyboardTypeNamePhonePadに設定されている場合、このオプションは無視されます。
これがSwift 2.0アップデートのすべてのキャラクターです:
SomeTextField.autocapitalizationType = UITextAutocapitalizationType.AllCharacters
大文字のプロパティで同じ問題が発生しました。キーボードの種類をデフォルトに変更しただけで、すべてが期待どおりに機能し始めます。私の場合、以前は自動大文字化をサポートしていないkeyboardTypeをNamePhonePadに設定していました。