我们可以改变nextResponder吗?
我有一堆搜索框。搜索框下方有表格视图。
如果用户单击表格视图(或搜索框之外的任何内容),我希望搜索框失去第一响应者状态。
然而,tableview 没有 touch up 动作。
所以我在桌面视图后面添加了一个大按钮。希望触摸事件能够由大按钮处理。
鉴于表视图完全覆盖表视图,这是行不通的。
那我该怎么办呢?
I got a bunch of search box. Under the search box there are tableviews.
If a user click a tableview (or anything outside the search box), I want search box to lose first responder status.
However, tableview does not have touch up action.
So I add a big button behind the tableview. In the hope that the touch up event get handled by the big button.
Given that the table view completely cover the tableview, this doesn't work.
So what should I do?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不确定你是使用 searchDisplayController 还是只使用 searchBar。但如果您使用 searchDisplayController,您可以实现委托方法,
当用户单击取消或透明视图(空搜索)时将调用该方法。
解决您的情况的另一种方法是设置 bool 来检查搜索框是否正在保持响应程序(在搜索获取响应程序时设置它)。在 cellForRowAtIndexPath 处,检查该值是否存在,然后 resignFirstResponder 并将值设置为 false。
希望这有助于
更新:Apple的使用 searchDisplayController 的示例代码
I'm not sure whether you use searchDisplayController or just searchBar. but in case you use searchDisplayController, you can implement delegate method
which will be called when user click cancel or transparent view (empty search).
An other way to work around your case is set bool to check whether search box is being hold responder or not (set it when search acquire responder). And at cellForRowAtIndexPath, check if that value, and resignFirstResponder and set value false.
Hope this help
Update: Apple's sample code using searchDisplayController