【问题标题】:Cannot auto (or Force) dismiss keypad on iPad (iOS 7)无法在 iPad (iOS 7) 上自动(或强制)关闭键盘
【发布时间】:2013-10-25 04:44:31
【问题描述】:

我的应用程序有一个联系人列表(它从本地联系人加载到我的 iPad 中)和一个好友聊天列表。当我将我的好友添加到我的联系人时,然后单击搜索栏搜索联系人 -> 显示键盘。问题是当我点击键盘的搜索按钮(或在搜索栏上取消)然后即使调用了以下函数,键盘也不会关闭:

-(void)searchBarSearchButtonClicked:(UISearchBar *)sBar
{
 [searchBar resignFirstResponder];
}

即使我打电话给[self.view endEditing:YES]; 也是行不通的。当我在我的应用程序中触摸另一个按钮以显示 popover 时,键盘也不会关闭-> 这意味着以下代码不起作用[[[UIApplication sharedApplication] keyWindow] endEditing:YES];如果我不尝试将我的好友添加到我的联系人中,当我点击按钮以显示 popover 时,键盘会自动关闭,或者当我点击搜索按钮时,键盘会自动关闭顺利。

如何强制关闭键盘?

【问题讨论】:

  • 你可以试试:[self.view endEditing:YES]; ?

标签: ios iphone objective-c ios7


【解决方案1】:
 //try this
 - (void)searchBarSearchButtonClicked:(UISearchBar *)sBar
 {
      [sBar resignFirstResponder];
 }

【讨论】:

  • 我也调用了这个函数。但是当我尝试将我的好友添加到我的联系人列表时它不起作用。如果我不这样做,这个功能就可以了。
  • 你给 UISearchBar 委托了吗?
  • sBar 或 searchBar(my outlet) 是一样的,不需要更换。
  • 是的,我必须这样做。正如我所说,如果我不尝试将我的好友添加到我的联系人列表中,一切正常。我认为这个动作有问题,但我不知道为什么???
【解决方案2】:

计算三步

1) 为文本字段设置委托

2) 为特定的 textfielf yourtextfielg.delegate=self 设置 Delegate。

3) 退出该特定文本字段 [txt resignFirstResponder]。

【讨论】:

  • 我以前也这样做过。我认为问题在于我将好友添加到我的联系人列表时的操作。但是为什么当我这样做时,它会影响自动关闭键盘操作?
【解决方案3】:

解决方法如下:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
    [self.view addGestureRecognizer:tap];
}

您需要 UI 字段来退出第一响应者状态以关闭键盘。

- (void)dismissKeyboard
{
   [searchBar resignFirstResponder]; //It might not work

[field resignFirstResponder]; //it will surely work
}

【讨论】:

  • 当我在代码行中放置断点时,我可以看到命令 [searchBar resignFirstResponder];(或 [self.view endEditing YES]; 如果我替换了) 也被调用。但不影响。这意味着不需要添加手势作为您的建议。需要解决的问题是为什么该命令也调用了,但它不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-26
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多