Objective c 单击searchbutton,停止UISearchDisplayController退出第一响应者
我有一个Objective c 单击searchbutton,停止UISearchDisplayController退出第一响应者,objective-c,ios,cocoa-touch,Objective C,Ios,Cocoa Touch,我有一个UISearchDisplayController,我希望在单击键盘的搜索按钮时避免在搜索后关闭键盘。 我试图使用另一篇文章中的Josh Cashwell的解决方案:设置UISearchBarDelegate并实现SearchBarShoulDediting。但我有一个问题要抓住正确的事件: SearchBarShouldEndEditing在任何情况下(即单击视图中的任何其他位置,拖动ResultableView,…)都应返回yes,但单击search按钮时除外 我的实施: 我试图在s
UISearchDisplayController
,我希望在单击键盘的搜索按钮时避免在搜索后关闭键盘。
我试图使用另一篇文章中的Josh Cashwell的解决方案:设置UISearchBarDelegate
并实现SearchBarShoulDediting
。但我有一个问题要抓住正确的事件:
SearchBarShouldEndEditing
在任何情况下(即单击视图中的任何其他位置,拖动ResultableView,…)都应返回yes,但单击search按钮时除外
我的实施:
我试图在searchBarSearchButtonClicked
中设置一个变量,并在SearchBarShoulDediting
中使用它来确定是否返回YES
或NO
。在反复提示Searchtext并按search时工作正常,但在按search后单击视图中的任何其他位置时,键盘不会关闭
因此,希望有一种更好的方法来检查是否因为单击搜索按钮而调用了SearchBar是否应该取消编辑
,但我不明白
非常感谢你的帮助 当用户单击键盘上的“搜索”按钮时,为什么不希望键盘消失
但是无论如何。。。我解决这个问题的方法是,在
搜索栏中应该取消编辑:
委托方法(在它返回YES
之前),创建希望键盘为新的第一响应者保留的文本字段(通过UIResponder的方法)。这样,键盘就没有理由关闭。当用户单击键盘上的“搜索”按钮时,为什么您不希望键盘消失
但是无论如何。。。我解决这个问题的方法是,在
搜索栏中应该取消编辑:
委托方法(在它返回YES
之前),创建希望键盘为新的第一响应者保留的文本字段(通过UIResponder的方法)。这样,键盘就没有理由不使用。解决方法:使用NSTimeInterval来节省按下Searchbutton的时间。在搜索栏上,应将“从现在到现在的时间差”设置为选中的已保存值。If(diff<0.001){return NO;}else{return YES;}我不知道这是否是一个智能解决方案,但它可以工作。已解决:使用NSTimeInterval来节省按下Searchbutton的时间。在搜索栏上,应将“从现在到现在的时间差”设置为选中的已保存值。如果(diff<0.001){return NO;}否则{return YES;}我不知道这是否是一个明智的解决方案,但它确实有效。嗨,Michael,非常感谢您的回复。问题是:becomeFirstResponder不能与UISearchDisplayController一起工作。我不想每次都设置焦点。我不是告诉你在UISearchDisplayController
上调用成为第一响应者,而是在任何其他文本字段上(不是UISearchDisplayController
的一部分)问题是:becomeFirstResponder不能与UISearchDisplayController一起工作(我试图在searchBarSearchButtonClicked中调用它-它不能工作)。我不想每次在SearchBar中设置焦点都应该取消编辑。以下是背景:可以使用扫描仪在搜索栏中输入文本。扫描仪在扫描后发送enter。扫描后,焦点应停留在搜索栏上,这样您就不必点击搜索栏重新开始扫描。但是,当用户手动向外制表时,焦点将丢失。如果没有SearchDisplayController,仅使用searchBar,您必须手动呼叫resignfirstresponder,但使用SearchDisplayController,则按search时焦点将自动丢失。-这是我的经验。嗯。。。我现在完全搞不懂你想干什么。也许其他人看这个问题会对你有更好的理解和更好的答案。嗨,迈克尔,非常感谢你的回答。问题是:becomeFirstResponder不能与UISearchDisplayController一起工作。我不想每次都设置焦点。我不是告诉你在UISearchDisplayController
上调用成为第一响应者,而是在任何其他文本字段上(不是UISearchDisplayController
的一部分)问题是:becomeFirstResponder不能与UISearchDisplayController一起工作(我试图在searchBarSearchButtonClicked中调用它-它不能工作)。我不想每次在SearchBar中设置焦点都应该取消编辑。以下是背景:可以使用扫描仪在搜索栏中输入文本。扫描仪在扫描后发送enter。扫描后,焦点应停留在搜索栏上,这样您就不必点击搜索栏重新开始扫描。但是,当用户手动向外制表时,焦点将丢失。如果没有SearchDisplayController,仅使用searchBar,您必须手动呼叫resignfirstresponder,但使用SearchDisplayController,则按search时焦点将自动丢失。-这是我的经验。嗯。。。我现在完全搞不懂你想干什么。也许其他人看这个问题会对你有更好的理解和更好的答案。