Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 响应者到底是什么意思?_Iphone_Cocoa Touch_First Responder - Fatal编程技术网

Iphone 响应者到底是什么意思?

Iphone 响应者到底是什么意思?,iphone,cocoa-touch,first-responder,Iphone,Cocoa Touch,First Responder,通常我们使用辞职的FirstResponder在iphone应用程序中隐藏键盘。 例如,当我们使用UISearchBar时,在用户单击搜索按钮后,我们通过实现searchBarSearchButtonClicked函数来隐藏键盘,如下所示: -(void)searchBarSearchButtonClicked:(UISearchBar*)searchBar{ NSLog(@"Search Button Click, result should be show here"

通常我们使用辞职的FirstResponder在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;     
}
我们将搜索栏设置为第一响应器,然后用户单击搜索按钮后键盘将隐藏

为什么会这样?我们没有调用任何隐藏键盘的函数,我们只是将搜索栏设置为第一响应程序,为什么系统只是自动隐藏键盘

有人能解释一下这个过程的机制吗

多谢各位

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

当您告诉搜索栏停止作为“第一响应者”(
[searchbar resignFirstResponder]
)时,键盘不再需要并消失。“第一响应者”是当前正在接受事件(键盘或触摸事件)的UI对象。期望键盘输入的对象(如搜索栏)将在成为第一响应者时导致键盘出现


当您告诉搜索栏停止成为“第一响应者”(
[searchbar resignFirstResponder]
)时,键盘就不再需要了,它就会消失。

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

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

对于文本字段,点击该字段会使该字段成为第一个响应者,从而截获所有后续UI事件。文本字段使用键盘捕捉UI事件,以便自动调用键盘。文本字段对任何与键盘无关的输入都不感兴趣,因此当它辞去第一响应者的职务时,它会将键盘放在一边

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


(顺便说一句,这是现在的老帽子,但早在90年代初,当Objective-C和NextStep是开创性的技术时,它就是fan fricken tastic。Tim Burners Lee发明了网络浏览器,只是为了让他有理由购买下一个立方体。)

Objective-C的工作原理是以选择器的形式向对象发送消息,选择器是属于目标对象的方法的名称。“响应者”是一个对象,它将响应UI事件发送的消息

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

对于文本字段,点击该字段会使该字段成为第一个响应者,从而截获所有后续UI事件。文本字段使用键盘捕捉UI事件,以便自动调用键盘。文本字段对任何与键盘无关的输入都不感兴趣,因此当它辞去第一响应者的职务时,它会将键盘放在一边

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


(顺便说一句,这已经是老掉牙了,但早在90年代初,Objective-C和NextStep是开创性的技术时,fan fricken tastic就开始使用了。Tim Burners Lee发明web浏览器就是为了让他有理由购买下一个立方体。)

+1响应者链文档:非常感谢您的解释!这很有帮助!现在我可以更好地理解“响应者”的内容了。+1响应者链文档:非常感谢您的解释!这很有帮助!现在我能更好地理解“响应者”的东西了。酷。您的意思是,当搜索栏成为第一响应者时,搜索栏将自动调用显示键盘功能,当搜索栏停用时,它将自动调用隐藏键盘功能。对吗?所以,假设我有另一个对象,它是一个按钮,如果我将该按钮设置为第一响应器,键盘也将被隐藏,对吗?酷。您的意思是,当搜索栏成为第一响应者时,搜索栏将自动调用显示键盘功能,当搜索栏停用时,它将自动调用隐藏键盘功能。对吗?所以,假设我有另一个对象,它是一个按钮,如果我将这个按钮设置为第一响应器,键盘也会被隐藏,对吗?