我有一个视图,它使用单点触摸事件(单指)进行绘图(线条、循环、文本等)。现在我想把这个视图放在 UIScrollView 中,这样就可以进行缩放和平移。当然,需要两个手指来执行缩放和平移。
这样做的模式是什么?我只发现 UIScrollView 的内容只接受单击(它只包含一个按钮)的例子。当内容需要触摸动作时,什么也不做。
我有一个视图,它使用单点触摸事件(单指)进行绘图(线条、循环、文本等)。现在我想把这个视图放在 UIScrollView 中,这样就可以进行缩放和平移。当然,需要两个手指来执行缩放和平移。
这样做的模式是什么?我只发现 UIScrollView 的内容只接受单击(它只包含一个按钮)的例子。当内容需要触摸动作时,什么也不做。
访问 UIScrollView 上的 panGestureRecognizer 属性,并将其 minimumNumberOfTouches 属性设置为 2:
myScrollView.panGestureRecognizer.minimumNumberOfTouchesRequired = 2;
我认为您应该从为滚动视图禁用滚动并为两者启用用户交互开始。然后在 touchesBegan: 你应该检查接触点的数量。如果它只有一个(也就是用户想要绘制)你什么都不做(禁用滚动视图的交互也会禁用所有子视图)。但是,如果触摸点的数量大于一个,则启用滚动然后执行
[UIView setUserInteractionEnabled: NO]
这样,当您在 UIScrollView 上用两根手指捏合或缩放时,不应在 UIView 上绘制任何线条。
我帮助开发了一个应用程序,该应用程序需要在滚动视图中使用签名板,并且滚动视图的子视图对于触摸事件很奇怪,有时您必须将手指放在那里才能通过滚动视图并到达内部视图,所以有一点滞后......但我最终做的是继承 UIScrollView 并覆盖
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {}
方法,如果触摸落在签名板的框架中,它将 [scrollView setScrollEnabled:NO]; 并且绘图发生得越来越快......唯一的问题是他们无法从那个盒子滚动滚动视图..基本上我在滚动视图中创建了一个死点
但是,这有点奇怪,我认为 UITableView 可能更适合你......只需将其设为 1 个巨大的表格单元格,我认为你会得到更好的结果......
不要忘记为这些功能启用“多点触控”。