UIScrollView和contentwith需要触摸移动事件



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

做那件事的模式是什么?我只发现了一些例子,当UIScrollView的内容只接受单个点击(它只包含一个按钮)。

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

myScrollView.panGestureRecognizer.minimumNumberOfTouchesRequired = 2;

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

[UIView setUserInteractionEnabled: NO]

这样,当你用两个手指在UIScrollView上按压或缩放时,不会在UIView上画线

我帮助开发了一个应用程序,需要在滚动视图中使用签名板,而滚动视图的子视图对于触摸事件来说很奇怪,有时你必须按住手指才能通过滚动视图并到达内部视图,所以有一点延迟…但我最终做的是子类化一个UIScrollView并重写

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

方法,如果触摸落在签名板的框架中,它将[scrollView setScrollEnabled:没有);画得更快更流畅了……唯一的问题是他们不能从那个框中滚动滚动视图。基本上我在滚动视图中创建了一个死点

但是,这有点不稳定,我认为UITableView可能更适合你…把它设为一个巨大的表格单元格,我想你会得到更好的结果....

不要忘记为这些功能启用' multi - Touch'

最新更新