3

我有一个名为 Boards 的类,它是 的子类UIView,我分配了它的一个实例并将其放入 aUIScrollView中,我想而不是他触及到UIScrollView,但到子视图:Boards(UIView),我只是不不知道如何将触摸从 传递UIScrollViewUIView

PS:我将手动更改contentOffsetUIScrollView因此我不需要在 中进行触摸UIScrollView,但在UIView.

PS: UIView 正在接收touchesEnded, 和touchesBegan事件,只是没有touchesMoved

4

4 回答 4

2

如果您希望 UIScrollView 仅以编程方式滚动,则必须对其进行子类化并覆盖 touchesBegan/Moved/Canceled/Ended 方法。即使那样,您也可能会遇到问题。UIScrollView 并非旨在忽略用户输入。

如果可能,您应该将 UIScrollView 替换为自定义视图。contentOffset您可以更改视图的transform属性以移动其内容,而不是更改。

或者你可以嵌套两个视图,一个外部视图和一个内部视图。将您的 Boards 视图放在内部视图中。然后,而不是改变contentOffset,改变内部视图的frame.

如果动画很重要,我很确定第二个选项将提供动画过渡,而第一个选项也可能。

于 2010-01-15T05:02:39.427 回答
0

尝试delaysContentTouches在滚动视图中关闭。这将立即将所有子触摸直接转发到子视图,而不检查它是否是滚动视图触摸

于 2010-01-15T02:00:32.607 回答
0

为什么不创建 UIScrollView 的子类?然后,将子类接收到的所有触摸事件传递给 UIView,如下所示。

@implementation SubclassOfScrollView

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    [self.nextResponder touchesBegan:touches withEvent:event];
}

@end
于 2010-01-15T04:51:46.107 回答
0

此处有关该问题的新更新(包括指向 ZoomScrollView 源代码的链接 + 关于 UIScrollView 内部的一些出色解释)。
此外,请查看 Apple 更新的ScrollViewSuite示例。它在第三个示例中有您描述的场景。

于 2010-09-03T20:37:51.340 回答