iOS触摸事件通过其他视图的移动触发

时间:2014-07-21 20:45:15

标签: ios objective-c quartz-graphics

以下是我尝试实施的方案:

我已经有了一个视图,可以让用户通过直接触摸视图(如涂鸦画布)来绘制涂鸦。此视图实现touchesBegantouchMovedtouchEnded处理程序以从触摸事件参数中绘制线条。

现在不是那样,我希望用户能够在这个画布视图上拖动和移动另一个UIView,并且仍然可以像直接触摸一样绘制线条。例如,用户可以在画布视图上拖动笔图像视图以绘制笔样式的线条。

在这种情况下,如何将此笔图像视图的移动传输到画布以便识别它?还有一个问题:如果我希望这个画布视图只识别拖动其他视图的动作而不是直接触摸,我该怎么办?

(很抱歉,这个问题有点过于笼统,只想得到一些指针)...谢谢!

1 个答案:

答案 0 :(得分:1)

查看问题的更好方法是

  

如何将画布上的移动转移到笔的位置   图像视图?

这很容易。您已经拥有跟踪画布中移动的所有代码(touchesBegan,touchesMoved,touchesEnded),因此您需要做的就是更改笔视图的center属性以跟踪画布中的移动。 (显然,您需要应用小的X和Y偏移量来将笔视图的center放在正确的位置。)

您需要注意的唯一非显而易见的细节是,笔视图必须将userInteractionEnabled设置为NO。这样,笔视图就不会干扰到达画布视图的触摸。

请注意,UIImageView默认情况下禁用了用户互动,因此如果笔视图为UIImageView,则您无需执行任何操作。但是,如果您使用通用UIView来显示笔,则需要在属性检查器下的故事板中禁用用户交互,或者在代码中禁用它,例如在viewDidLoad