2

我有一个带有 CustomCells 的 UITableView,其中包含一个 TextField。看看我上传的图片。

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

你的问题就是 Arcank 所说的,单元格没有定义。

- (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

在您的代码中,单元格永远不会被设置。是零。所以 -resignFirstResponder 消息无效。

于 2012-04-24T09:16:05.077 回答
0

实现这个方法 - (void)textFieldDidEndEditing:(UITextField *)textField{ [textField resignFirstResponder]; }

于 2012-04-24T09:16:54.723 回答