0

我对视图的触摸有疑问:

我有一个父视图(框架是(0,0,768,1024)),其中包含两个子视图(A 和 B),一个带有标签 100 的框架(0,0,512,768)和带有标签 200 的 B 框架(512,0,512,768)。

我实现了触摸方法touchesBegan:withEvent: touchesMoved:withEvent: touchesEnded:withEvent:

当我开始从 A 触摸到 BtouchesBegan并且touchesMoved方法按预期触发时

我需要实现:当触摸从 A 到达 B 时,A 的 touchesEnded 应该被触发,B 的触摸开始被触发,反之亦然。我在各自的方法中有自己的逻辑。有人可以建议如何实现相同的目标。

4

2 回答 2

1

这是故意行为。通常,如果您触摸“取消”按钮,并且当您抬起它时手指滑到“删除”按钮上,您不想意外删除某些内容。

但是,我遇到过我确实希望像这样传递触摸的情况。就像@ejazz 一样,我将工作移到同时包含 A 和 B 的视图中。这启用了用户交互,并touchesBegan实现touchesMovedtouchesEnded.

当触摸移动到子视图上时,它会发送适当的消息。我刚刚打开和关闭了子视图,但您应该可以调用touchesBegan,touchesMovedtouchesEnded在必要时打开相应的子视图。如果您需要知道触摸何时开始和结束,您将需要跟踪与每次触摸关联的上一个视图 - 或者只调用其previousLocationInView:方法。

于 2012-04-10T07:59:45.290 回答
0

我建议使用该UIPanGestureRecognizer课程。将其附加到父视图,设置委托。

您现在可以关注状态和位置。所以当状态是UIGestureRecognizerStateBegan检查位置是在A还是B,当状态是UIGestureRecognizerStateEnded检查位置是在B还是A。

您可以检查点击视图是否包含 A 或 B 视图

CGRectContainsRect(<#CGRect rect1#>, <#CGRect rect2#>)

然后使用 view.frame

于 2012-04-10T07:45:31.413 回答