我有一个视图drawingView
用于绘制我使用touchesBegan,Moved,End的位置,以将曲线添加到呈现它们的子视图renderingView
。我还想在同一个屏幕上支持缩放和平移,因此我添加了UIScrollView
作为drawingView
的子视图,并在我的scrollView委托的renderingView
方法中返回viewForZooming
。
现在,所有缩放/平移都有效。 renderingView
放大,仍然显示贝塞尔曲线,我可以平移放大的渲染等等。但是,我的初始功能是通过使用{{1}的touches *方法实际绘制到renderingView
1}}不再起作用,因为scrollview是一个子视图并且正在消耗触摸事件。
我愿意将scrollview的平移设置为最少2个手指的手势,因此缩放/捏合和平移将是2个手指的手势,为drawingView
处理单个手指触摸留出空间*事件添加路径信息。
现在,我找到了一种方法(尽管看起来像是一种黑客攻击),通过迭代手势并检查其平移手势,将scrollview的平移手势设置为至少两次手指触摸。但是,将此设置为最少两个手指触摸,不允许我的canvasView
开始获取触摸事件。我怎么能这样做?
canvasView
子视图正在吃其超级视图的touchesBegan / Moved / Ended事件。我怎么能解决这个问题呢?我愿意将scrollView的事件限制为两个手指手势,并让单手手势由超级视图处理??
答案 0 :(得分:0)
考虑使用手势识别器,它会让您的生活更轻松。还可以使用单个视图来获取触摸事件,并将触摸数据传递给其他对象。
使用UIPinchRecognizer进行缩放和平移,使用UIPanRecognizer进行实际绘图。您可以将UIPanRecognizer.maximumNumberOfTouches设置为1.
您可能需要查看Apple网站上的实施细节。
https://developer.apple.com/reference/uikit/uigesturerecognizer