代码之家  ›  专栏  ›  技术社区  ›  kpower

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

  •  0
  • kpower  · 技术社区  · 15 年前

    根据iPhone应用程序编程指南(事件处理章节),如果我使用uiview或uiviewcontroller,我应该实现所有事件处理方法(即使它是空实现)。我不应该调用这些方法的超类实现。

    为什么?(我在指南和谷歌中搜索过,但找不到答案……或者只是不能很好地搜索)

    2 回复  |  直到 15 年前
        1
  •  2
  •   jessecurry    15 年前

    来自 guide :

    本指南的原因是 简单:处理的所有视图 接触,包括你自己的,期待 (或应预期)收到 触摸事件流。如果你阻止 接收到的uikit响应程序对象 触摸某个阶段的 事件,结果行为可能是 未定义,可能不受欢迎。

        2
  •  -1
  •   Mihir Mehta    15 年前

    视图中有很多东西是由用户决定的运行时间…通过它的委托方法…如果没有定义,应用程序有可能崩溃…

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

    tableView:cellForRowAtIndexPath:
    

    它不会给你任何错误…但是,当运行应用程序以及当包含TableView的视图加载应用程序时,应用程序将崩溃。 你会得到

    *由于未捕获异常“nsInternalConsistenceyException”,正在终止应用程序,原因:“UITableView数据源必须从TableView:CellForRowatindexPath:返回单元格”

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

    所以在uiview和uiviewcontroller中也是这样…如果没有实现特定的委托方法,则应用程序可能在某些事件上崩溃(可能不是…)