テーブルビューで実装するカスタムセルがあります。セル内にテキスト フィールドがあります (テンキー キーボードに設定)。テーブル ビュー内には 12 個のセルがあります。カスタムセルクラスに入れたコードを使用して、キーボードをダスミスできますtouchesBegan
(ただし、編集中のアクティブセルをタップした場合にのみ機能します)。キーボードを文字と数字に変更すると、キーボードを閉じることもできます。テキストフィールドを閉じたいキーボードにカスタムの「DONE」ボタンがあります。
endEditing:YES
orでキーボードを閉じようとしばらく試みましたが、うまくいき[cell.textFieldAnswer resignFirstResponder]
ません。
何か案は?
SecurityQuestions.m:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[GetQuestionsCustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
}
NSInteger nextIndexPathRow = indexPath.row;
nextIndexPathRow++;
cell.labelQuestion.text = [arrayOfQuestions objectAtIndex:indexPath.row];
cell.labelQuestionNumber.text = [NSString stringWithFormat:@".%d", nextIndexPathRow];
switch (indexPath.row) {
case 0:
tfA1 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 1:
tfA2 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 2:
tfA3 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 3:
tfA4 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 4:
tfA5 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 5:
tfA6 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 6:
tfA7 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 7:
tfA8 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 8:
tfA9 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 9:
tfA10 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 10:
tfA11 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
case 11:
tfA12 = (UITextField*)[cell viewWithTag:nextIndexPathRow];
break;
}
cell.textFieldAnswer.tag = indexPath.row;
cell.textFieldAnswer.delegate = self;
[cell.textFieldAnswer setText:[answers objectAtIndex:indexPath.row]];
return cell;
}
GetQuestionsCustomCell.m:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.textFieldAnswer resignFirstResponder];
}
編集1:
私がやっているとき:[cell performSelector@selector(KeyDown:)]
私はクラッシュしています。KeyDown は、カスタム セル ビュー コントローラー内にあります。注:上記のように、「セル」はカスタムセルとして構成されています。
エラー:
スレッド 1: EXC_BAD_ACCESS (コード = 2、アドレス = 0x631ec)
編集 2: 'Thilina' のプライベート チャットでのすべての助けに感謝します。
- (void)doneAction:(id)sender{
NSArray *cells = [self.tableView visibleCells];
for(UIView *view in cells){
if([view isMemberOfClass:[GetQuestionsCustomCell class]]){
GetQuestionsCustomCell *cell = (GetQuestionsCustomCell *) view;
UITextField *tf = (UITextField *)[cell textFieldAnswer];
if([tf isFirstResponder]){
[tf resignFirstResponder];
}
}
}
}