1

我有一个视图控制器,其视图设置为具有 3 个按钮和其他子视图。单击其中一个按钮(第三个按钮)时,我将另一个视图控制器的视图添加为子视图self.view (在此视图中,我有一个搜索显示控制器处于活动状态,带有键盘)

我可以使用以下代码来实现这一点

 [self.searchDisplayController setActive:YES];
    [self.searchDisplayController.searchBar setShowsCancelButton:NO];
    [self.searchDisplayController.searchBar becomeFirstResponder];

现在,当我按下第二个按钮时,我尝试从超级视图中删除此视图,并尝试以下列方式在viewWillDisappear( ) 中退出键盘,但键盘仍然不退出[self.view endEditing:YES]

一个小编辑,如果我注释掉以下代码,它就会辞职

- (BOOL)searchBarShouldEndEditing:(UISearchBar *)searchBar {

    if (self.dataSource.count)
        return YES;
    return NO;
}
4

3 回答 3

0

您可以使用 NSNotificationCenter 来完成,如下所示。

//.m 文件:

[[NSNotificationCenter defaultCenter]addObserver:self 选择器:@selector(ResignFirstResponder:) name:@"resign" object:nil];

在 ResignFirstResponder 中:

[searchBar resignFirstResponder];

在 addObserver 上面使用的哪个类中,您必须实现该方法。

//.m 文件从您要发送操作的位置,调用方法如下。[在您的第二个按钮上单击]

[[NSNotificationCenter defaultCenter] postNotificationName:@"resign" object:nil];

于 2013-07-30T06:55:08.793 回答
0

尝试退出 UISearchBarviewWillDisappear

[yourSearchBar resignFirstResponder];
于 2013-07-30T06:51:11.707 回答
0

在调用第二个按钮的方法中,只需输入

 [self.searchDisplayController.searchBar resignFirstResponder];

不理会 viewWillDisappear。那是为了当视图完成它正在做的任何动画时,以及当视图离开时。如果您将显示控制器设置为退出响应者,它应该使其立即消失。

希望这可以帮助!

于 2013-07-30T06:51:30.747 回答