gpt4 book ai didi

ios - 使用pointInside :withEvent: for different gestures

转载 作者:行者123 更新时间:2023-11-29 03:44:48 28 4
gpt4 key购买 nike

我有两个 View ABBA 的 subview 。我想监控 A 中的双击操作,在本例中,我会将 B 移动到点击位置。

现在,我想将这部分代码放在 B 中,这样可以避免在 A 中编码。

所以我在B中添加了双击手势识别器,并且我覆盖了B中的-pointInside:withEvent:,所以它可以对 B 框架之外的双击操作使用react。

但是,我仍然希望其他手势(包括单击)在 A 上工作,因此我想出了两种不同的方法来实现此目的:

  1. 识别pointInside:内部,对于单击,返回NO,对于双击∫,返回YES,但是,似乎有没办法做到这一点。
  2. pointInside: 始终返回 YES,并捕获单击和双击手势。对于单击手势,发送给A处理,但是目前还没有找到方法。

谁能帮我解决这个问题?或者告诉我是否看错了方向?

最佳答案

这种方法可以工作,但是非常困惑,仅仅是因为,pointInside:withEvent:是一个非常原始的调用。

当您双击 View 时,您将收到多个 hitTest:withEvent: 方法调用(依次调用 pointInisde:withEvent:),这意味着您必须做一些艰苦的工作,使用时间偏移来测量先后发生的两次点击。

它接到了多少个电话?只要您的手指在屏幕上停留的每一毫秒,此方法就会受到方法调用的地毯式轰炸。为了您想要做的事情而重载它是不明智的。

简单地说,手势识别器是非常方便的对象,它封装了必须由您自己处理实时 UITouch 的所有复杂性。

作为保持代码相对简洁的解决方案,您可以将 UITapGestureRecognizer 添加到 A,然后将选择器交给 B 来处理,您甚至可以在界面生成器中或通过代码执行此操作:

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:B action:@selector(handleGesture:)];
tapGesture.numberOfTapsRequired = 2;

[A addGestureRecognizer:tapGesture];

(AB 是您的观点)

关于ios - 使用pointInside :withEvent: for different gestures,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875558/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com