ユーザーがテーブルビュー内のすべてのテキストフィールド(セルごとに2つのテキストフィールド)を矢印キーで循環できるようにしようとしています。
現在私が行っているのは、各テキストフィールドにタグを設定し、各テキストフィールドを配列に追加することです。ユーザーがテキストフィールドをクリックして編集を開始すると、いくつかの矢印ボタンが表示され、矢印キーを押すと、現在選択されているテキストフィールドのタグを取得し、それを配列の場所として使用して、テキストフィールドを引き出します。に移動して、新しいテキストフィールドをファーストレスポンダーとして設定します。
ただし、これに伴う問題は、私のセルが再利用されるという事実にあります。したがって、ユーザーがセルを画面外にスクロールすると、戻ってきたときに、テーブルの行1のセルに、タグ15と16のテキストフィールドが含まれている可能性があります。これらは、矢印キーを壊すテキストフィールド配列の最後です。そして、スクロールすればするほど、テキストフィールドの順序が乱れます。
再利用可能なセルを維持しながら、私がやろうとしていることを達成することは可能ですか?それとも、単にそれらを再利用しないことを要求するだけですか?
これが私の矢印コードです...
- (void)arrowPressedHandler:(UIButton *)button
{
UITextField *newTextFieldSelection;
//tags are offset by 2 because I have use tag 1 for something else, and tag 0 cannot be used
int realLocation = selectedTextField.tag - 2;
//arrow code. for an up button i go back 2 slots in the array, right is + 1 in array
//etc etc
@try{
switch (button.tag) {
case NumericKeyboardViewUpArrow:
newTextFieldSelection = [textFields objectAtIndex:realLocation - 2];
[newTextFieldSelection becomeFirstResponder];
break;
case NumericKeyboardViewLeftArrow:
newTextFieldSelection = [textFields objectAtIndex:realLocation - 1];
[newTextFieldSelection becomeFirstResponder];
break;
case NumericKeyboardViewRightArrow:
newTextFieldSelection = [textFields objectAtIndex:realLocation +1];
[newTextFieldSelection becomeFirstResponder];
break;
case NumericKeyboardViewDownArrow:
newTextFieldSelection = [textFields objectAtIndex:realLocation + 2];
[newTextFieldSelection becomeFirstResponder];
break;
default:
break;
}
}
@catch (NSException *e)
{
return;
}
}