ios响应程序链-视图如何捕获事件?
根据“如果视图由视图控制器管理,并且视图无法处理事件,则视图控制器将成为下一个响应者” 这句话是什么意思? 视图是否可以在内部定义事件的处理程序并从本质上捕获它?如果不是这种情况,则如果视图的ViewController已显式定义事件的处理程序,则将调用该视图的ViewControllerios响应程序链-视图如何捕获事件?,ios,objective-c,Ios,Objective C,根据“如果视图由视图控制器管理,并且视图无法处理事件,则视图控制器将成为下一个响应者” 这句话是什么意思? 视图是否可以在内部定义事件的处理程序并从本质上捕获它?如果不是这种情况,则如果视图的ViewController已显式定义事件的处理程序,则将调用该视图的ViewController 视图处理事件似乎与MVC模式相反,或者文档真的说调用了特定于视图的控制器上的处理程序吗?UIView实际上已经有了可以覆盖的事件处理程序。您可以子类化UIView,并使用以下方法处理触摸事件: - (void
视图处理事件似乎与MVC模式相反,或者文档真的说调用了特定于视图的控制器上的处理程序吗?
UIView
实际上已经有了可以覆盖的事件处理程序。您可以子类化UIView
,并使用以下方法处理触摸事件:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event;
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
视图和视图控制器之间有两种通信方式。通常,视图控制器通常告诉视图要显示什么,并且当事件发生时,视图倾向于调用委托方法。但我明白,您通常希望这些事件处理程序由视图调用,但在视图控制器中处理。但是
UIView
免费获得这些方法,它们与视图特别相关有一个响应程序链,由每个UIResponder的
nextResponder()
组成:
视图
,则该UIViewController。(这就是你引用的那篇文章所说的。)- 触摸事件
- 没有针对性的行动
至于你的问题,这和MVC有什么关系。。。?没有什么。正如乔什·加夫尼(Josh Gafni)正确的回答所说,MVC并不是世界上唯一的模式。这是关于响应者的,而不是关于MVC。有关响应者链的更多信息,以及链上出现的触摸事件和无目标操作的实际示例,请参阅我的书:谢谢,你的书确实澄清了苹果文档中提出的一些问题。