4

我有一个视图,它使用单点触摸事件(单指)进行绘图(线条、循环、文本等)。现在我想把这个视图放在 UIScrollView 中,这样就可以进行缩放和平移。当然,需要两个手指来执行缩放和平移。

这样做的模式是什么?我只发现 UIScrollView 的内容只接受单击(它只包含一个按钮)的例子。当内容需要触摸动作时,什么也不做。

4

4 回答 4

4

访问 UIScrollView 上的 panGestureRecognizer 属性,并将其 minimumNumberOfTouches 属性设置为 2:

myScrollView.panGestureRecognizer.minimumNumberOfTouchesRequired = 2;
于 2013-07-04T06:52:57.907 回答
2

我认为您应该从为滚动视图禁用滚动为两者启用用户交互开始。然后在 touchesBegan: 你应该检查接触点的数量。如果它只有一个(也就是用户想要绘制)你什么都不做(禁用滚动视图的交互也会禁用所有子视图)。但是,如果触摸点的数量大于一个,则启用滚动然后执行

[UIView setUserInteractionEnabled: NO]

这样,当您在 UIScrollView 上用两根手指捏合或缩放时,不应在 UIView 上绘制任何线条。

于 2013-06-29T20:15:27.247 回答
1

我帮助开发了一个应用程序,该应用程序需要在滚动视图中使用签名板,并且滚动视图的子视图对于触摸事件很奇怪,有时您必须将手指放在那里才能通过滚动视图并到达内部视图,所以有一点滞后......但我最终做的是继承 UIScrollView 并覆盖

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {}

方法,如果触摸落在签名板的框架中,它将 [scrollView setScrollEnabled:NO]; 并且绘图发生得越来越快......唯一的问题是他们无法从那个盒子滚动滚动视图..基本上我在滚动视图中创建了一个死点

但是,这有点奇怪,我认为 UITableView 可能更适合你......只需将其设为 1 个巨大的表格单元格,我认为你会得到更好的结果......

于 2013-06-05T12:24:38.920 回答
1

不要忘记为这些功能启用“多点触控”。

于 2013-07-04T08:26:27.523 回答