私は、二次方程式を解くためのかなり単純な iPhone アプリに取り組んでいます。これは主に、少なくとも概念と数学が非常に簡単だからです。
Interface Builder で、2 つのラベル、3 つのテキスト フィールド (varAfield など)、および [解決] ボタンを持つインターフェイスを作成しました。UITextFieldDelegate として設定された 3 つのテキスト フィールドは、「数字と句読点」キーボードが自動的に表示されるように設定されています。このコードは、キーボードを閉じるために使用され、ユーザーがリターン キーをタップすると、自動的に次の変数に移動します (「完了」と表示されている変数 C を除いて、「次へ」と表示されています)。
- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
if (theTextField == varAfield) {
[varAfield resignFirstResponder];
[varBfield becomeFirstResponder];
}
if (theTextField == varBfield) {
[varBfield resignFirstResponder];
[varCfield becomeFirstResponder];
}
if (theTextField == varCfield) {
[varCfield resignFirstResponder];
}
return YES;
}
いずれにせよ、becomeFirstResponder の最初のインスタンスで問題が発生します。キーボードは正常に表示されますが、「Numbers and Punctuation」の代わりに ASCII キーボードが使用されています。また、変数 A から再度開始すると、正常に動作します。アプリ内で最初に (そして最初に) 呼び出された becomeFirstResponder の最初のインスタンスをどこに移動しても、正しく動作しません。
更新:becomeFirstResponderは(最初のインスタンスでも)リターンキーの選択を尊重しますが、どのキーボードが設定されていても、「ASCII Capable」が表示されます。どうしたの?IBですべてを確認しましたが、問題ないようです...