我的 UISearchBar 代码中发生了一些奇怪的事情,我无法弄清楚发生了什么。在我的应用程序中,我有一个视图控制器设置如下
查看控制器 A ---> 查看控制器 B
在视图控制器 A 上,我有一个包含“页面卷曲”按钮的工具栏。一旦点击此按钮,我将执行具有页面卷曲过渡样式的模态转场并显示视图控制器 B(这给用户一种效果,即视图控制器 B 在视图控制器 A 下方,而实际上它们是两个截然不同的视图控制器) . 在视图控制器 B 上,我有一个名为“查找附近地址”的按钮。当用户点击“查找附近地址”时,我正在寻找两个无缝连续发生的操作:
- 首先,我想执行一个展开转场(撤消页面卷曲转换并将视图控制器 A 卷回视图控制器 B)
- 其次,一旦 View Controller B 消失并且 View Controller A 再次成为主视图,我希望 View Controller A 上的 UISearchBar 成为第一响应者,这意味着搜索栏中应该出现一个闪烁的光标并且应该弹出一个键盘.
到目前为止,我已经能够成功执行 unwind segue,但是当尝试将 View Controller A 上的 UISearchBar 设置为第一响应者时,键盘没有弹出!我完全迷失了,我不知道为什么会这样。
我采取的方法很简单。视图控制器 B 上的展开转场返回并进入视图控制器 A 上的函数调用,(IBAction)returnToMainView:(UIStoryboardSegue *)segue.
现在从这个函数中调用,我调用[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 成为第一响应者并调出键盘。仅当我从视图控制器 B 返回(展开)时,键盘才无法弹出,第一响应者已设置,但由于某种奇怪的原因键盘没有弹出。