停止UISearchDisplayController在搜索按钮单击时退出第一个响应者

时间:2011-12-28 15:06:04

标签: objective-c ios cocoa-touch

我有一个UISearchDisplayController,我希望在点击键盘的搜索按钮后避免在搜索后关闭键盘。 我尝试使用其他帖子的Josh Cashwell解决方案:设置UISearchBarDelegate并实施SearchBarShouldEndEditing。但是我有一个问题要抓住正确的事件: SearchBarShouldEndEditing在任何情况下都应返回yes(即,单击视图中的任何其他位置,拖动resulttableview,...),除非单击搜索按钮。

我的实施: 我尝试在searchBarSearchButtonClicked中设置变量并在searchBarShouldEndEditing中使用它来确定我是否会返回YESNO。在迭代地倾斜Searchtext并按下搜索时工作正常,但在按下搜索后单击视图中的任何其他位置时,键盘不会关闭。

所以希望有一种更好的方法来检查是否因为点击搜索按钮而调用了searchBarShouldEndEditing,但是我没有得到它。

非常感谢你的帮助!!

2 个答案:

答案 0 :(得分:0)

当用户点击键盘上的“搜索”按钮时,为什么键盘不会消失?

但无论如何......我解决问题的方法是在你的searchBarShouldEndEditing:委托方法中(在它返回YES之前),制作你想要键盘保持的文本字段新的第一响应者(通过UIResponder的becomeFirstResponder方法)。这样键盘没有理由解雇。

答案 1 :(得分:0)

解决:使用NSTimeInterval来节省按下Searchbutton的时间。在SearchBarShouldEndEdiing时差从现在到保存的值被检查。 if(diff <0.001){return NO;} else {return YES;}我不知道这是否是一个聪明的解决方案,但它确实有效。