UISearchBar成为第一个没有显示键盘的响应者

时间:2013-08-07 02:48:30

标签: ios objective-c segue first-responder

我的UISearchBar代码中发生了一些奇怪的事情,我无法弄清楚发生了什么。在我的应用程序中,我有一个视图控制器设置如下

查看控制器A --->查看控制器B

在View Controller A上,我有一个包含“page curl”按钮的工具栏。轻触此按钮后,我执行带有页面卷曲过渡样式的模态segue并显示View Controller B(这为用户提供了View Controller B位于View Controller A下方的效果,而实际上它们是两个截然不同的View Controllers) 。在View Controller B上,我有一个名为“Find Near Address”的按钮。当用户点击“查找近地址”时,我正在寻找无缝连续发生的两个操作:

  • 首先,我想执行展开segue(撤消页面卷曲过渡并将视图控制器A卷曲回View Controller B)
  • 其次,一旦View Controller B消失并且View Controller A再次成为主视图,我希望View Controller A上的UISearchBar成为第一个响应者,这意味着闪烁的光标应出现在搜索栏和键盘中应该弹出。

到目前为止,我已经能够成功执行unwind segue但是当我试图在View Controller A上设置我的UISearchBar作为第一响应者时,键盘没有弹出!我完全迷失了,我不知道为什么会这样。

我采取的方法很简单。视图上的展开segue控制器B返回并进入名为(IBAction)returnToMainView:(UIStoryboardSegue *)segue.的视图控制器A上的函数调用现在,在此函数中,我调用[self FindNearAddress],下面是我的FindNearAddress函数:

- (void)FindNearAddress {
    [self.theSearchBar becomeFirstResponder];
}

我还实现了以下UISearchBarDelegate方法

- (void)searchBarTextDidBeginEditing:(UISearchBar *)theSearchBar {
    [self.theSearchBar setShowsCancelButton:YES animated:YES];
    self.theSearchBar.text = @"";
}

- (void)searchBarCancelButtonClicked:(UISearchBar *)theSearchBar {
    self.theSearchBar.text=@"Please enter a custom address..";
    [self.theSearchBar setShowsCancelButton:NO animated:YES];
    [self.theSearchBar resignFirstResponder];
}

任何人都可以帮助我/指出我做错了什么?我想指出我在视图控制器A上添加了一个调用我的“FindNearAddress”函数的测试按钮,这成功地使我的UISearchBar第一响应者并调出键盘。当我从View Controller B返回(展开)时,键盘只能弹出键盘,第一个响应器被设置但是键盘没有因某些奇怪的原因弹出。

0 个答案:

没有答案