TextField位于UITableView resignFirstResponder中

时间:2012-04-24 09:03:10

标签: ios xcode uitableview tableview

我有一个带有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 个答案:

答案 0 :(得分:1)

使用此方法tableView:willDisplayCell:forRowAtIndexPath:这将解决您的问题

答案 1 :(得分: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的评论,这几乎就是他想说的。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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