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

修复UIScrollView以向上而不是向下传递事件

  •  -1
  • Adam  · 技术社区  · 14 年前

    UIView是不处理事件的,将它们传递到链上。默认情况下,这会将它们传递给其父视图,如果没有处理(最终)则传递给其父UIViewController。

    UIScrollView打破了这一点(有很多问题,因此,主题是“为什么我的应用程序在添加UIScrollView后停止工作?”)

    意见

    一般来说 避免我创建“假”UIView子类,这些子类的存在纯粹是为了捕获事件并将它们传递到它们应该去的地方(这使得代码容易出错)

    如果时间触发而位置没有明显变化,滚动视图会将跟踪事件发送到内容视图的触摸子视图。如果用户在计时器结束前将手指拖得足够远,滚动视图将取消子视图中的任何跟踪,并自行执行滚动。

    …如果我可以重写“如果计时器触发”方法,并实现它 正确地 ,我相信我可以修复所有UISV实例。

    -有没有人知道这个方法是什么,或者是找到它的好方法(调试已编译的ObjC类以查找符号名,也许?)

    1 回复  |  直到 14 年前
        1
  •  0
  •   Adam    14 年前

    唯一的问题是。。。它在任何3.x iphone和ipodtouch上都不起作用。

    编辑:

    在OS 3.x上,我创建了一个具有额外属性的自定义UIView子类:

    NSObject *objectToDelegateToOnTouch;
    id touchSourceIdentifier;
    

    每当触摸输入时,视图都会将触摸消息直接发送到objectToDelegateToOnTouch,但带有touchSourceIdentifier的额外参数。

    这样,每当你得到一个触摸,你就知道它来自哪里(你可以使用一个对象,一个字符串,或者任何你想要的东西作为“标识符”)。