このスレッドでいくつかの解決策を試しましたが、問題が発生しています。私のテーブルにはplistからのデータが動的に読み込まれるため、ストーリーボードで1つのセルから別のセルへの接続を作成できません。セルの右側に2つのDSTextFieldオブジェクトがあるDSCellと呼ばれるカスタムUITableViewCellクラスを実装しました。左端のDSTextFieldでEnterキーを押すと、フォーカスが次のフィールドに正常に移動します。ただし、右側のテキストフィールドでEnterキーを押すと、フォーカスが次のセル(1行下)のテキストフィールドに移動するはずです。しかし、そうではありません。
セルのテキストフィールドには、タグ2と3があります。
これが私のcellForRowAtIndexメソッドです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PaperCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
// Configure the cell...
NSString *text = [_paper objectAtIndex:indexPath.row];
UILabel *label = (UILabel *)[cell viewWithTag:1];
label.text = text;
// Set the "nextField" property of the second DSTextfield in the previous cell to the first DSTextField
// in the current cell
if(indexPath.row > 0)
{
DSCell *lastcell = (DSCell *)[self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:indexPath.row-1 inSection:indexPath.section]];
DSTextField *lastField = (DSTextField *)[lastcell viewWithTag:3];
DSTextField *currentField = (DSTextField *)[cell viewWithTag:2];
lastField.nextField = currentField;
}
return cell;
}
textFieldShouldReturnメソッドは次のとおりです。
- (BOOL) textFieldShouldReturn:(UITextField *) textField {
DSTextField *field = (DSTextField *)textField;
UIResponder *responder = field;
[responder resignFirstResponder];
responder = field.nextField;
[responder becomeFirstResponder];
return YES;
}
現在、cellForRowAtIndexPathが呼び出されたときに、2番目のDSTextFieldのnextFieldプロパティを現在のセルに設定しようとしていますが、機能していないようです。行1から始めて、前の行のセルを取得しようとします。次に、右端のテキストフィールドのnextFieldプロパティを、現在のセルの左端のテキストフィールドに割り当てます。
これを行うためのより良い方法はありますか?テキストフィールドごとに異なるタグを付けたくないので、そうすると面倒になる可能性があります。