响应者究竟意味着什么?

通常我们使用resignFirstResponder来隐藏iphone应用程序中的键盘。 例如,当我们使用UISearchBar时,在用户点击搜索按钮后,我们通过实现searchBarSearchButtonClicked函数来隐藏键盘,如下所示:

 -(void)searchBarSearchButtonClicked:(UISearchBar*)searchBar{   
        NSLog(@"Search Button Click, result should be show here"); 
        [searchBar setShowsCancelButton:NO animated:YES];
       [searchBar resignFirstResponder];    
        self.dictTableView.allowsSelection = YES;   
        self.dictTableView.scrollEnabled = YES;     
}

我们将searchBar设置为第一响应者,然后在用户单击搜索按钮后,键盘将被隐藏。

为什么它像这样工作? 我们没有调用任何隐藏键盘的功能,我们只是将searchBar设置为第一响应者,为什么系统会自动隐藏键盘?

任何人都可以解释这个过程的机制吗?

非常感谢你!


Objective-C通过以属于目标对象的方法名称的选择器形式向对象发送消息。 “响应者”是将响应由UI事件发送的消息的对象。

响应者生活在一个称为响应者链的层次结构中。 如果响应者无法理解UI消息,它会将其转发给链中的下一个响应者,直到应用程序对象本身。

在文本字段的情况下,点击该字段将导致该字段成为第一响应者,以便截取所有后续的UI事件。 文本字段用键盘捕捉UI事件,以便自动唤起键盘。 文本字段对任何与键盘无关的输入都没有兴趣,所以当它作为第一响应者辞职时,它将把键盘移开。

这是一个高度面向对象的API的美妙之处。 您不必微观管理标准行为。 对象本身会为你处理它。 如果你习惯于使用更程序化的API,可能会有点迷惑。

(顺便说一下,现在这是旧帽子,但90年代早期Objective-C和NextStep是开创性技术的时候,这种风格简直令人fan目结舌.Tim Burners-Lee发明了Web浏览器,以便他可以借口购买下一个立方体。)


“第一响应者”是当前正在接受事件(键盘或触摸事件)的UI对象。 希望键盘输入的对象(如搜索栏)会导致键盘在成为第一响应者时出现。

当你告诉[searchBar resignFirstResponder]停止成为“第一响应者”( [searchBar resignFirstResponder] )时,键盘不再需要并且消失。

链接地址: http://www.djcxy.com/p/44279.html

上一篇: What exactly a responder means?

下一篇: UISearchbar clearButton forces the keyboard to appear