ios - 手指追踪和手势识别

标签 ios objective-c cocos2d-iphone uiimageview uipangesturerecognizer

所以我正在开发一个应用程序,我的所有手势都可以被识别。当我尝试在手指触摸屏幕的任何地方添加 UIImageViews 时,我的问题就来了。

这些 View 将跟随手指,他们确实这样做了,但问题是我相信他们正在吞下触摸,不允许识别手势。我试过:

[_fingerHolder1 setUserInteractionEnabled:NO];
[_fingerHolder2 setUserInteractionEnabled:NO];

但似乎并没有改变什么。 我在 ccTouchesBegan/Moved/Ended 方法中添加这些 View ,而手势在各自的处理程序中被识别。

我已经研究过使用 UIPanGesture 但我在识别滑动以及设置手指跟踪器的 UIImageViews 的坐标时遇到了一些问题.我应该对此进行更多试验还是有不同的解决方案?

感谢任何帮助!

最佳答案

UIImageView 将接收和处理触摸,因此它们不会被转发到 cocos2d OpenGL View (也是 UIView)。

为了完成这项工作,您需要创建 UIImageView 的子类并覆盖每个 touches… 方法并手动将事件转发到 cocos2d 的 View ,这里是 touchesBegan 的示例:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [[CCDirector sharedDirector].view touchesBegan:touches withEvent:event];
}

使用这个 UIImageView 子类代替您当前使用的原始子类。

这将使常规的 cocos2d 触摸事件正常工作,并且如果您将 UIGestureRecognizers 添加到 cocos2d 的 View 中,它还应该使 UIGestureRecognizers 的行为符合预期。

关于ios - 手指追踪和手势识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201710/

相关文章:

iphone - 从第二个 ViewController 到第一个 ViewController

javascript - osx 多线程和 webview

ios - 如何以多部分形式将多个图像文件发送到服务器?

iphone - Cocos2d iPhone : Rotate Sprite using Accelerometer

iOS 6 - 如何在方向改变时运行自定义代码

ios - 什么情况下需要使用MTLStoreActionStoreAndMultisampleResolve而不是MTLStoreActionMultisampleResolve?

ios - 当按下 UIButton 并调用 IBAction 时,显示带有事件指示器的 UIAlertView 直到完成

ios - 交叉推广 iPhone 应用程序

ios - 在商店中安装应用程序之前打开应用程序商店页面

iphone - 为什么全屏透明按钮在 cocos2d-iphone 上将 fps 从 60 降低到 30,我该如何解决?