我有一个带有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
但这不适合我。
还有其他解决方案吗?
答案 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]; }