UIScrollView和内容需要触摸移动事件

我有一个使用单点触摸事件(单指)进行绘制的视图(线条,循环,文本等)。 现在我想把这个视图放在UIScrollView中,这将允许缩放和平移。 当然,两个手指都需要执行缩放和平移。

这种模式是做什么的? 我发现只有当UIScrollView的内容只接受单击(它只包含一个button)的例子。 当内容需要时,什么也没有做什么接触移动。

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

myScrollView.panGestureRecognizer.minimumNumberOfTouchesRequired = 2; 

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

 [UIView setUserInteractionEnabled: NO] 

这样,在UIScrollView上捏或放大两个手指时,UIView上不应该绘制任何线条。

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

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

方法,如果触摸降落在签名板的框架,它会[scrollView setScrollEnabled:NO]; 而绘图发生得越来越平滑…唯一的问题是他们不能从那个盒子滚动滚动视图..基本上我创build了一个死循环与滚动视图

但是,这有点不可思议,我认为一个UITableView可能会更好的为你…只是使它1巨型表格单元格,我认为你会得到更好的结果….

不要忘记为这些function启用“多点触摸”。