【发布时间】:2017-04-24 15:01:32
【问题描述】:
我有一个视图 drawingView 用于绘图,我使用 touchesBegan,Moved,End 将曲线添加到渲染它们的子视图 renderingView。我还想在同一屏幕上支持缩放和平移,所以我添加了一个UIScrollView 作为drawingView 的子视图,并在我的scrollView 委托的viewForZooming 方法中返回renderingView。
现在,所有的缩放/平移都可以了。 renderingView 放大,仍然布置贝塞尔曲线,我可以平移放大的渲染等。但是,我使用 drawingView 的 touches* 方法实际绘制到 renderingView 的初始功能不再是起作用,因为滚动视图是一个子视图并且正在消耗触摸事件。
我愿意将滚动视图的平移设置为最少两指手势,因此缩放/捏合和平移将是两指手势,为canvasView 处理单指触摸*事件留出空间添加路径信息。
现在,我找到了一种方法(虽然它看起来像一个 hack),通过迭代其手势并检查其平移手势何时将滚动视图的平移手势设置为至少两个手指触摸。但是,将此设置为最少两指触摸,不允许我的canvasView 开始获取触摸事件。我该怎么做?
TL;DR
UIScrollView 子视图正在吞噬其父视图的 touchesBegan/Moved/Ended 事件。我该如何解决这个问题,我愿意将 scrollView 的事件限制为两个手指手势,并让超级视图处理单个手指手势??
【问题讨论】:
标签: uiscrollview uikit touchesmoved