2

TextField を含む CustomCells を持つ UITableView があります。私がアップロードした写真を見てください。

Picture1 Picture2 スクロール を開始すると、キーボードが非表示になるようにします。

で試してみました

  - (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
   NSLog(@"Got called");
   ProductTableCell *cell;
   [cell.mengeTextField  resignFirstResponder];

}

コンソールログ:

2012-04-24 12:57:48.924 Book-App[21029:15803] Got called
2012-04-24 12:57:50.535 Book-App[21029:15803] Got called
2012-04-24 12:57:51.681 Book-App[21029:15803] Got called

しかし、これは私にとってはうまくいきません。

他の解決策はありますか?

4

4 に答える 4

1

この方法を使用tableView:willDisplayCell:forRowAtIndexPath:すると、問題が解決します

于 2012-04-24T09:22:01.797 に答える
1

あなたの問題は、アーカンクが言ったことです、セルは定義されていません。

- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
   NSLog(@"Got called");
   ProductTableCell *cell;// <---this cell is nil
   [cell.mengeTextField  resignFirstResponder];
}

セルにアクセスできない場合は、ごまかす方法があります。ファーストレスポンダーを別のものにして、すぐに辞任してください。

- (void) scrollViewWillBeginDragging:(UIScrollView *)scrollView
    {
       NSLog(@"Got called");
       [scrollView becomeFirstResponder];
       [scrollView resignFirstResponder];//You might not even need this (not sure)
    }

これで問題は解決します。scrollView がファーストレスポンダーになれない場合は、できる他のものを使用してください。(即興)。


編集:あなたとAalok Parikhのコメントを読んでください。これは彼が言おうとしていることのほとんどです.

于 2012-04-24T20:08:25.980 に答える
0

このメソッドを実装します - (void)textFieldDidEndEditing:(UITextField *)textField{ [textField rejectFirstResponder]; }

于 2012-04-24T09:16:54.723 に答える
0

コードでは、セルが設定されることはありません。ゼロです。したがって、-resignFirstResponder メッセージは効果がありません。

于 2012-04-24T09:16:05.077 に答える