保留UITouch:允许或不允许?

时间:2017-07-12 20:50:28

标签: ios uikit uiresponder

以下是documentation of UITouch

的引用
  

触摸对象在多点触控序列中持续存在。 从不   处理事件时保留触摸对象。如果需要保留   关于从一个触摸阶段到另一个触摸阶段的触摸的信息,复制它   来自触摸的信息。

然后来自Event Handling Guide for UIKit Apps的另一个:

  

清单9-1显示了TouchableView类的主要实现   及其触控处理方法。每种方法都遍历   触摸并执行所需的操作。 touchViews字典   使用UITouch对象作为检索子视图的键   在屏幕上操纵。

class TouchableView: UIView {
    var touchViews = [UITouch:TouchSpotView]()
    ...
}

显然,他们通过将UITouch个实例用作字典键来违反自己的规则......

那么与此相关的是什么?是否应保留UITouch个实例以进行复杂的手势跟踪?

2 个答案:

答案 0 :(得分:1)

Apple开发人员并不完美,是的,我同意他们违反了他们自己的指导方针。类似地,Apple说你不应该继承集合视图,但我之前已经这样做了,因为添加了一些小的实用函数,没有任何负面影响。我会说这应该放在类似的类别中,不要这样做。"如果他们说过不这样做,你需要自担风险。但实际上因为创建代理NSTouch记录非常容易,为什么不这样做呢?出于类似的原因,我最终选择了" factoring"我的集合视图实用程序在另一个实用程序类中运行,只是因为我肛门并且想确保我是安全的;)

答案 1 :(得分:0)

我向Apple提交了一个有关示例代码与UITouch文档之间不一致的错误报告。结果是从UITouch documentation中删除了“处理事件时从不保留触摸对象”这一段。由于sample code保留了UITouch对象,因此我们可以假定它是允许的。