繁体   English   中英

在UIView的子类中处理事件时,为什么要实现所有事件处理方法?

[英]Why should I implement all event-handling methods, while handling events in a subclass of UIView?

根据《 iPhone应用程序编程指南》(事件处理一章),如果我使用UIView或UIViewController,则应该实现所有事件处理方法(即使它是null实现)。 而且我不应该将这些方法称为超类实现。

为什么? (我已经在《指南》和Google中进行了搜索,但是找不到答案...或者只是无法进行良好的搜索)

指南

制定此指南的原因很简单:处理触摸的所有视图(包括您自己的视图)都希望(或应该期望)接收完整的触摸事件流。 如果您阻止UIKit响应器对象在事件的特定阶段接收到触摸,则可能导致不确定的行为,并且可能是不希望的。

视图中有很多事情是由用户决定运行时间的……是由其委托方法决定的……如果未定义,则您的应用程序可能会崩溃……

例如,如果您有一个应用程序,并且正在其中使用UITableView,而您未实现

tableView:cellForRowAtIndexPath:

它不会给您任何错误...但是,当您运行应用程序以及包含Tableview的视图加载时,应用程序将崩溃并且您将获得

*由于未捕获的异常“ NSInternalInconsistencyException”而终止应用程序,原因:“ UITableView dataSource必须从tableView:cellForRowAtIndexPath返回一个单元格:”

因为应用程序不知道如何显示表格的单元格...

因此,使用UIView和UIViewController的情况将是相同的情况。。。如果未实现特定的委托方法,则您的应用程序可能在某些事件下崩溃(可能不是...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM