UIPanGestureRecognizerは、指を動かしているときにセレクターを呼び出すだけなので、操作に問題があります。指が同じ場所に立っていても、セレクターを呼び出し続けたいと思います。
画面には4つのオブジェクトがあり、1つは上部、1つは右側、1つは左側、もう1つは下部にあります。画面の中央にオブジェクトがあります(これは、panGestureで移動しているオブジェクトです)。このオブジェクトが他のオブジェクトに触れると、ログを取得したいのですが、触れたときに機能しますが、同じ場所に指を置いたままにするとログが停止し、少し動かすと再びログが表示されます。
とにかく同じ場所に指を置いてもセレクターを呼び出し続けることができますか?
コード例は次のとおりです。
- (void)moveObject:(UIPanGestureRecognizer *)sender
{
CGPoint translation = [sender translationInView:self.limiteDirecional];
[sender setTranslation:CGPointMake(0, 0) inView:self.limiteDirecional];
CGPoint center = sender.view.center;
center.y += translation.y;
int yMin = 0;
int yMax = self.limiteDirecional.frame.size.height;
if (center.y < yMin || center.y > yMax )
return;
sender.view.center = center;
center.x += translation.x;
int xMin = self.limiteDirecional.frame.size.width;
int xMax = 0;
if (center.x > xMin || center.x < xMax)
return;
sender.view.center = center;
if (CGRectIntersectsRect(sender.view.frame,self.Top.frame)) {
NSLog(@"TOP");
}
if (CGRectIntersectsRect(sender.view.frame,self.Botton.frame)) {
NSLog(@"BOTTON");
}
if (CGRectIntersectsRect(sender.view.frame,self.Right.frame)) {
NSLog(@"RIGHT");
}
if (CGRectIntersectsRect(sender.view.frame,self.Left.frame)) {
NSLog(@" LEFT");
}
if (sender.state == UIGestureRecognizerStateEnded) {
sender.view.center = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2);
}
}