• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

iphone - 如何检测在点击时关闭 UISearchDisplayController 的确切事件

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:24:12 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

据我所知,一个事件的 UISearchDisplayController 可以在两种情况下被解除:

  1. 当随时点击取消按钮时
  2. 当搜索文本字段为空并且搜索栏下方的灰色变暗区域为 点按。

我能够通过 searchBarCancelButtonClicked 方法轻松检测到案例 1。至于案例 2,似乎没有任何委托(delegate)方法可以让我在点击时立即获得通知。

我实现了所有的委托(delegate)方法来研究调用的顺序,发现对于案例2,只触发了两个方法:

点击 --> willUnloadSearchResultsTableView --> searchDisplayControllerDidEndSearch

但是,这两个事件仅在点击延迟后触发,而不是在立即点击事件时触发(后者是我真正需要的)。

为完整起见,以下是案例 1 的一系列事件:

searchBarCancelButtonClicked --> willHideSearchResultsTableView --> didHideSearchResultsTableView --> willUnloadSearchResultsTableView --> searchDisplayControllerDidEndSearch

有什么想法吗?

这个答案question建议使用 searchDisplayControllerDidEndSearch,但对我来说为时已晚。出于好奇,我打算在取消搜索时立即将搜索文本值重置为以前的值。在 willUnloadSearchResultsTableViewsearchDisplayControllerDidEndSearch 中实现此逻辑会在延迟设置文本时导致搜索栏中相当难看的闪烁。

谢谢!



Best Answer-推荐答案


尝试使用: 1.

- (BOOL)searchBarShouldEndEditingUISearchBar *)searchBar;

此方法由 UISearchDisplayController 组合的 searchBar 调用。 But you need to define when to return YES/NO (hides first responder) very accurate.

附:也许您需要将 searchBar 的委托(delegate)分配给自己。

2.

- (void)searchDisplayControllerWillEndSearchUISearchDisplayController *)controller;

总是从这两种情况中调用。

关于iphone - 如何检测在点击时关闭 UISearchDisplayController 的确切事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16793945/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap