0

我有两个自定义视图作为 UIView 上的子视图。我想采取在两个子视图中的任何一个上发生的每一次交互,并对另一个子视图做同样的事情。这包括所有可能的交互,如缩放、平移、旋转等。实现它的最简单/最干净的方法是什么?

4

1 回答 1

0

如果您只对识别特定手势(例如缩放、平移、长按)感兴趣,我建议您使用UIGestureRecognizer子类,它允许您监听特定类型的手势。将它们全部添加到一个视图中,每当其中一个被触发时,对它们都执行操作(例如增加视图的比例或移动内容)。

另一个类似的选择是实现触摸处理方法UIView并直接响应每个棘手事件,模仿两个视图上的操作。这些方法是:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    //called when a touch or touches begin
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    //called when a touch or touches move
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    //called when a touch or touches end
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
    //called when a touch or touches are interrupted in some way, such as a phone call
}

您可以在此处UIResponder的参考资料中阅读有关这些方法的更多信息。

OTOH,如果你想真正合成触摸事件,你将不得不做一些黑客攻击。是一个关于如何扩展 UITouch 类的功能的教程,以便您可以以编程方式模拟触摸。如果您计划将此应用程序提交到 App Store,则不应使用此解决方案,因为它使用私有 API。

于 2013-07-10T00:25:56.307 回答