0

私は現在、主に日本語 (セカンダリ英語) 市場向けのアプリケーションを開発していますUIKeyboardType。テンキー/フリック スタイルの日本語キーボードを使用すると、テキスト フィールドを設定して実際に動作させることができないことがわかりました。UIKeyboardType適切に対応しているはずなのに、

userIdField = [[[UITextField alloc] initWithFrame:CGRectMake(120, 5, 185, 35)]autorelease];
userIdField.delegate = self;
userIdField.keyboardType = UIKeyboardTypeASCIICapable;
userIdField.autocorrectionType = UITextAutocorrectionTypeNo;
userIdField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
userIdField.returnKeyType = UIReturnKeyDone;
userIdField.autocapitalizationType = UITextAutocapitalizationTypeNone;
userIdField.backgroundColor = [UIColor clearColor];
[cell addSubview:userIdField];

テキストフィールドをタップすると、デフォルトの日本語テンキー スタイルのキーボードが開きます。UIKeyboardTypeASCIICapableUIKeyboardTypeURLUIKeyboardTypeEmailAddressを試しましたが、UIKeyboardTypeNamePhonePad常にデフォルトのテンキー日本語キーボードが表示されます。設定は問題なく機能するため、コードが読み取られていることはわかっていますUIKeyboardTypePhonePadが、何らかの理由で、電話にはデフォルトの日本語のテンキー キーボードしか表示されません。

これを修正する方法はありますか、それとも昔から存在していたバグですか? アルファベット、数字、"_/." 文字のみを入力できるキーボードをユーザーに強制的に使用させるにはどうすればよいですか?

ハングル (韓国語) キーボードを使用すると、散発的に動作します。ASCII キーボードは正常に起動し、URL キーボードは .com ボタンでハングルを起動します。ASCIICapable の場合、UITextInputTraits.h ファイルを見ると、次のように書かれています: UIKeyboardTypeASCIICapable, // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active ハングルと日本語の両方が非 ASCII であるため意味がありませんが、ハングル + ASCIICapable = ASCII (非 ASCII であるためハングルである必要があります) 、一方、日本語テンキー + ASCIICapable = 日本語テンキー。

プログラムでキーボード言語を変更することに関する他の投稿を見ましたが、これは実行できませんが、この質問は、UIKeyboardType で指定された種類のキーボードが表示されない理由を尋ねることに重点を置いています。

4

1 に答える 1

0

日本語のテンキー キーボードが表示されるのは、キーボードを ASCII 入力に変更するには最初にボタンをクリックする必要がありますが、技術的には ASCII 対応のキーボードであるためです。ABCこの問題を解決する方法を考えましたが、複雑で問題がたくさんあります。

  1. 2 つのテキストフィールド、上下に 1 つ。上部のテキストフィールドが非表示
  2. 下部のテキスト フィールドでは、secureTextEntry が YES に設定されています。これにより、実際の ASCII キーボードが強制されますが、入力されたテキストが難読化されます。
  3. ユーザーが下部のテキストフィールドをタップすると、上部のテキストフィールドが表示されます
  4. テキストがキーボードで入力されると、最初に一番下の textField に移動し、次に一番上の textField のテキストを設定します。そうしないと、テキスト入力を非表示にするために使用される完全な黒丸が表示されます。

間違いを犯してテキストを編集したい場合は、それを正しく機能させるために他の多くのコードを実行する必要があり、ファーストレスポンダーなどを割り当てます (テキストが入力されたときにテキストが入力されるようにするなど)。適切な場所にある一番下のテキストフィールド)。

これは明らかに最適なソリューションではありません。

于 2012-11-29T05:26:39.523 に答える