0

私はUITableView2つのセクションを持っています。最初のセクションは、2 番目のセクションのセルを作成するステッパーを使用した静的な行です。2 番目のセクションの各セルにはUITextField、キーパッドが含まれています。UITapGestureRecognizerキーパッドの追加の DONE ボタンを使用してキーパッドを閉じることができますが、最後のセルに対してのみ機能します。私は次の方法を試しました:

  1. UITapGestureRecognizerテーブルビューで

ViewDidLoadが入れた:

   UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideKeyboard)];
    [self.tableView addGestureRecognizer:gestureRecognizer];

その後

-(void)hideKeyboard{
    [self.tableView resignFirstResponder];
}

また

-(void)hideKeyboard:(UITapGestureRecognizer*)sender{
    [self.cellText endEditing:YES];
}
  1. タグを使用して、編集中のテキスト フィールドを認識します。

 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath I added
    [cellText addTarget:self action:@selector(myNumberValueBeginEditing:) forControlEvents:UIControlEventEditingDidBegin];

そして

-(void)myNumberValueBeginEditing:(UITextField *)sender
{
    int row = [sender.superview.superview tag];
    UITextField *cellTemp = (UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row];
    cellTemp.delegate = self;
    [cellTemp becomeFirstResponder];
}

次に、DONEボタンでFirstResponderを辞任しようとしています

-(IBAction)doneButton:(UITextField *)sender {
NSLog(@"doneButton");
    int row = [sender.superview.superview tag];
    [(UITextField*)[(UITableViewCell *)sender.superview viewWithTag:200+row] resignFirstResponder];
}

キーパッドをすべてから辞任する方法がわかりませんUITextFields。誰かが何か救済策を持っているなら、私は本当に感謝します.

4

1 に答える 1

1

あなたはの使用に近かったendEditing:endEditing:テキストフィールドのインスタンスに送信する代わりに、メインビューに送信してみてください。元:

[self.view endEditing:YES];

endEditing:テキストフィールドインスタンスまたはビューに直接送信できます。後者の場合、指定したビューのサブビューである編集中のテキストフィールドは、ファーストレスポンダーを辞任します。

ドキュメントから:

ビュー(またはその埋め込みテキストフィールドの1つ)にファーストレスポンダーステータスを辞任させます

于 2013-02-26T15:42:13.067 に答える