我在使用 UIPanGestureRecognizer 时遇到了麻烦,因为它只是在我的手指移动时调用选择器,我希望它继续调用选择器,即使我的手指站在同一个地方。
屏幕上有 4 个对象,一个在顶部,一个在右侧,一个在左侧,一个在底部。我在屏幕中央有一个对象(这是我使用 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);
}
}