Objective c UIPinchGestureRecognitor-抑制和#x27;关闭夹点&x27;侦查

Objective c UIPinchGestureRecognitor-抑制和#x27;关闭夹点&x27;侦查,objective-c,cocoa-touch,cocos2d-iphone,box2d,uigesturerecognizer,Objective C,Cocoa Touch,Cocos2d Iphone,Box2d,Uigesturerecognizer,我正在使用UIPinchRecognizer和开放式按压来检测在Box2D世界中何时有人“拉开”了一个精灵 问题是,当您将两个项目相互拖动时,它会检测到这是一个紧密的挤压,并打断我的所有触摸关节和box2d对象的移动 我试着把我的问题分成两个问题——你现在读的问题是:是否有可能抑制这种紧逼,如果不可能的话: 我需要抑制对闭合挤压的检测,或者编写自己的开放挤压检测 我尝试在开放式按压中使用按压手势方法返回,如下所示: if (pinch.velocity < 0) { //close

我正在使用UIPinchRecognizer和开放式按压来检测在Box2D世界中何时有人“拉开”了一个精灵

问题是,当您将两个项目相互拖动时,它会检测到这是一个紧密的挤压,并打断我的所有触摸关节和box2d对象的移动

我试着把我的问题分成两个问题——你现在读的问题是:是否有可能抑制这种紧逼,如果不可能的话:

我需要抑制对闭合挤压的检测,或者编写自己的开放挤压检测

我尝试在开放式按压中使用按压手势方法返回,如下所示:

if (pinch.velocity < 0) {
    //close pinch
    return;
}
if(收缩速度<0){
//紧密挤压
返回;
}
但它不起作用,因为它仍然会打断touch关节/box2d对象


您能通过抑制检测到的闭合夹点来帮助我解决此问题吗?

我需要在设备上检查此问题,但我认为这已经解决了此问题:

//Multitouch / pinch?
UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchGesture:)];
pinchRecognizer.cancelsTouchesInView = NO; //This fixes it because it stops the mouse joints getting broken. 

[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:pinchRecognizer];
[UIPinchGestureRecognizer release];
在钳形测试方法中使用此选项:

if(pinch.velocity <0 ){
    return;
}

if(pinch.velocity)表示“将两个项目相互拖动”夹点识别器正在干扰的操作——这也是通过手势识别器实现的吗?如果是这样,您应该考虑使用
requiregestureerecognizertofail:
或委托方法
gestureerecognizer:shouldrecognizesimultaneouswithgestureerecognizer:
.Dragg设置识别器之间的显式依赖关系通过box2d鼠标关节,而不是手势识别器,可以将两个对象相对移动,但UIPinchGestureRecognitor会将其解释为挤压。我使用的唯一手势识别器是挤压。为什么您尝试的解决方案不起作用?当您进行近距离挤压时,挤压速度不小于零?不,是-但当pinchgesturerecognizer被触发时,它会使我的所有鼠标关节失效。这对于开放式夹点很好,因为它正在发挥其预期的功能,但对于闭合夹点则不行,因为每当两个项目被拖向另一个项目时,夹点识别器就会捕捉到触摸,而我无法拿回它们。这回答了你的问题吗?