我有一些问题试图实施三指捏。三指捏手势
我一直在使用2个手指捏与2个手指旋转,单独! (不需要同时需要或需要的手势)问题是很多时候,系统识别错误的移动,因为它们都非常相似,所以我最终不得不移除手指并再次按下,以便尝试使系统识别旋转(通常它确定捏首先)
我搜查了很多,看看delayBegin
会帮助,或者如果我可以做一些激活同时手势,但没有工作正常,所以我的想法是,而不是使用2个手指捏,我可以使用3(因为捏比旋转更容易)。
问题是,正如你所知,捏只能用2个手指工作。所以我决定我可以继承UIPinchGestureReconizer
,只允许它在屏幕上有3个手指时工作。其余的它可以作为标准夹点工作,甚至忽略三指(计算比例尺),但确保第三根手指仍在屏幕上。
所以,我想下面的实现为我ThreeFingerPinchRecognizer
(该子类UIPinchGestureRecognizer
)
@implementation GRThreeFingerPinchRecognizer
-(id)initWithTarget:(id)target action:(SEL)action
{
self = [super initWithTarget:target action:action];
if(self){
}
return self;
}
- (void)reset
{
[super reset];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
int numberOfTouches = event.allTouches.count;
if (numberOfTouches == 3)
{
[super touchesBegan:touches withEvent:event];
}
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
int numberOfTouches = event.allTouches.count;
if (numberOfTouches == 3)
{
[super touchesMoved:touches withEvent:event];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesEnded:touches withEvent:event];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[super touchesCancelled:touches withEvent:event];
}
所以,你可以看到,我试图让2手指捏的相同的功能(通过只有调用[super]
功能,并在touchesBegan
和touchesMoved
功能,我测试是否有在屏幕上3个手指(通过看event.alltouches.count
)
这样,旋转正在完善与两个手指,但捏是n工作得很好,它很难激活它,当它的时候,它不工作,因为两个手指捏...
我知道我可能会做这完全错误,所以任何帮助将是伟大的!
非常感谢!
野趣的方式,但PinchGestureRecognizer(这到底是要调用)可能期待触碰2不3,我或许会尝试删除其中一个触摸之前,你打电话super..you将不得不找出哪一个要删除虽然.. – Daniel
我相信这是在PinchGesture里面处理,因为我没有改变事件传递的任何东西,我只转发它!如果我删除了“如果”,捏可以正常工作(但用2个手指) –
*一个不错的提示:3个手指功能在设置中启用缩放功能的用户设备上不起作用(Apple功能中可以双击3手指放大(在任何应用程序中,很像截图功能在任何应用程序中的工作方式))...使用3更精细的应用程序检测功能可能与使用家庭按钮检测功能一样致命。 (我与许多其他人一起启用了此缩放功能) –