ユーザーがテーブルビューをナビゲートするときに無効になっているテキストフィールドをスキップしようとしています。ただし、表示されているセルの境界に達すると、テキストフィールドが無効になっているかどうかを検出しようとしているため、すべてがうまくいきません。無効になっている場合は、メソッドを再帰的に再度呼び出して、もう一度ナビゲートします。すなわち。ユーザーがボタンを押して右に移動し、そのテキストフィールドが無効になっている場合は、もう一度右プレスを再帰的に呼び出します。
表示されている範囲外のセルのテキストフィールドは無効になっているようです。ユーザーがテーブルの端に到達すると、無限ループに陥ります。そうしないと、問題が発生します。
これが私のコードのセクションで、有効なチェックを行い、そうでない場合は再帰呼び出しを行います。これは本当にそれほど複雑なことではありません。論理的には、移動したばかりのテキストフィールドが無効になっているかどうかを検出し、無効になっている場合は、同じボタンをもう一度押すだけです。特別なことは何もありません。
いくつかのプレイテストで編集すると、destinationIndexPathとnewTagの値は正しいものの、nextTextFieldSelectionがnullとして戻ってくることが明らかになりました。表示されていないindexPathを要求すると、nullが返される可能性はありますか?
//logic to move to next text field and manually scroll the tableViewbased on button input is here
nextTextFieldSelection = (UITextField *)[[_tableView cellForRowAtIndexPath:destinationIndexPath] viewWithTag:newTag];
if (nextTextFieldSelection.userInteractionEnabled == NO) {
switch (arrowButton.tag) {
case NumericKeyboardViewLeftArrow:
currentTextField = nextTextFieldSelection;
[self numericKeyboardView:(VS_NumericKeyboardView *)numericKeyboardView DidSelectArrowButton:(UIButton *)arrowButton];
return;
case NumericKeyboardViewRightArrow:
currentTextField = nextTextFieldSelection;
[self numericKeyboardView:(VS_NumericKeyboardView *)numericKeyboardView DidSelectArrowButton:(UIButton *)arrowButton];
return;
default:
break;
}
}