【问题标题】:TextField's in UITableView resignFirstResponderUITableView中的TextField resignFirstResponder
【发布时间】:2012-05-04 21:49:03
【问题描述】:

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

Picture1Picture2 我希望如果我开始滚动键盘应该隐藏。

我试过了

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

但这对我不起作用。

还有其他解决方案吗?

【问题讨论】:

  • 该方法是否被调用?放置控制台日志并检查它是否被调用?
  • 是的,方法正在被调用。我用日志编辑了我的帖子
  • 您是否为 UITableView 中的每个文本字段连接了插座??
  • 是的,我为文本字段连接了一个插座。它是一个动态的 TableView
  • 如果你连接了插座意味着你不需要在这个方法中声明“单元格”。你只需 [myTextField resignFirstResponder];这样做

标签: ios xcode uitableview tableview


【解决方案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 cmets,这几乎就是他想说的。

【讨论】:

  • 谢谢。我还找到了解决此问题的其他解决方案。我用 [[self.tableView superview] endEditing:YES];
【解决方案2】:

使用这个方法tableView:willDisplayCell:forRowAtIndexPath:这会解决你的问题

【讨论】:

  • 你是这个意思吗? - (void)tableView:(UITableView *)tableView willDisplayCell:(ProduktTableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath; { [cell.menge resignFirstResponder]; } 我试过但也没有工作
  • 不完全一样,您可以使用becomeFirstResponder 将焦点放在任何其他控件上
  • 如果我这样做,我的键盘总是会显示。我希望如果我加载视图键盘被隐藏。如果我点击文本字段,键盘应该会出现,所以我可以在里面放一些东西。现在,如果我开始滚动,键盘应该会消失。
  • 使用其他控件而不是文本字段
【解决方案3】:

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

【讨论】:

  • 如何在scrollViewWillBeginDragging方法中调用单元格?
【解决方案4】:

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

【讨论】:

  • 除非 textField 完成编辑,否则不会调用它。据我所知,当您滚动视图时不会发生这种情况。
猜你喜欢
  • 2016-03-28
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多