прекратить взаимодействие с пользователем после CGRectIntersectsRect

Я пытаюсь настроить небольшую часть игры, в которой пользователь перетаскивает метку на другую. Если он это сделал, метка сбрасывается, а очки игроков увеличиваются.

Проблема в том, что если я удерживаю метку нажатой, я получаю бесконечное количество очков, потому что созданный мной Rect не сбрасывает свою позицию, пока я держу палец на экране.

Вот код:

- (void)viewDidLoad
{
    UIPanGestureRecognizer *panrecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePangesture:)];

    [self.dragMe addGestureRecognizer:panrecognizer];
}

- (void)handlePangesture:(UIPanGestureRecognizer *)gestureRecognizer
{
    self.dragMe.center = [gestureRecognizer locationInView:self.dragMe.superview];

    CGRect dragMerect = self.dragMe.frame;

    CGRect endZonerect = self.endZone.frame;

    if (CGRectIntersectsRect(dragMerect, endZonerect)) {

        dragMerect.origin.x = 100;
        dragMerect.origin.y = 100;
        self.dragMe.center = dragMerect.origin;

        Points++;

        self.points.text = [NSString stringWithFormat:@"Points: %d",Points];

        NSLog(@"Rect is Intersecting");

        NSLog(@"%d",Points);
    }
}

Надеюсь, вы, ребята, понимаете, о чем я говорю и как это исправить!

Заранее спасибо, Никлас


person smnk    schedule 08.07.2014    source источник
comment
UIGestureRecognizer имеет свойство состояния, такое как начало жеста, конец, перемещение,... Используйте это свойство состояния.   -  person Ryan    schedule 08.07.2014


Ответы (1)


Если вы хотите, чтобы ваше приложение отключило все пользовательские взаимодействия, используйте:

[[UIApplication sharedApplication] beginIgnoringInteractionEvents];

Не забудьте включить его после сброса метки:

[[UIApplication sharedApplication] endIgnoringInteractionEvents];
person Michael    schedule 08.07.2014