2つのタッチを検出するようにオーバーライドUIGestureRecogniser
されていますが、必ずしも次々と続くとは限りません。
私は持っています:
- (BOOL)canBePreventedByGestureRecognizer:(UIGestureRecognizer *)preventingGestureRecognizer
{
if ([preventingGestureRecognizer isKindOfClass:[UIRotationGestureRecognizer class]])
{
self.state = UIGestureRecognizerStateCancelled;
return YES;
}
if ([preventingGestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]])
{
self.state = UIGestureRecognizerStateCancelled;
return YES;
}
//Will prevent a conflict with a 2 finger touch only.
if ([preventingGestureRecognizer isKindOfClass:[UITapGestureRecognizer class]])
{
if (preventingGestureRecognizer.numberOfTouches == 2)
{
self.state = UIGestureRecognizerStateCancelled;
return YES;
}
return NO;
}
self.state = UIGestureRecognizerStateRecognized;
return NO;
}
私のMVCには、RotationGestureRecogniserもあります。私の問題は、それらが競合していることです。私のdoubleTapジェスチャ認識機能は@selector
、上記の方法で防止する必要があるときにそのアクションを呼び出しています。
上記のメソッドは呼び出されていないようです。これは、2本の指が触れて回転を実行すると、次のコードが表示されるためだと思います。
- (void)secondTouchRecived
{
self.state = UIGestureRecognizerStateRecognized;
}
アクションメソッドを呼び出し、UIGestureResponders
防止メソッドをバイパスします。に変更してみましたUIGestureRecogniserStateBegan
が、これも防止方法を迂回しているようです。