Подтвердить что ты не робот

С UIPanGestureRecognizer существует ли способ действовать так часто, как после x много пикселей?

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

Есть ли способ сделать что-то вроде: каждые 10 пикселей панорамирования делают это или что-то подобное?

4b9b3361

Ответ 1

Вы ищете translationInView:, в котором рассказывается, как далеко продвинулась кастрюля, и ее можно протестировать на минимальном расстоянии. Это решение не распространяется на случай, когда вы идете туда и обратно в одном направлении в размере, равном минимальному расстоянию, но если это важно для вашего сценария, это не слишком сложно добавить.

#define kMinimumPanDistance 100.0f

UIPanGestureRecognizer *recognizer;
CGPoint lastRecognizedInterval;

- (void)viewDidLoad {
    [super viewDidLoad];

    recognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didRecognizePan:)];
    [self.view addGestureRecognizer:recognizer];
}

- (void)didRecognizePan:(UIPanGestureRecognizer*)sender {
    CGPoint thisInterval = [recognizer translationInView:self.view];

    if (abs(lastRecognizedInterval.x - thisInterval.x) > kMinimumPanDistance ||
        abs(lastRecognizedInterval.y - thisInterval.y) > kMinimumPanDistance) {

        lastRecognizedInterval = thisInterval;

        // you would add your method call here
    }
}