使用UIPanGestureRecognizer,有没有办法只经常这样做,比如在x多个像素被淘汰之后?

use*_*541 12 objective-c uigesturerecognizer ios uipangesturerecognizer

现在我的UIPanGestureRecognizer识别每个平移,这是很棒且必要的,但是当我使用它作为滑动手势来增加和减少变量的值时,在方法中我只想经常动作.如果每次检测到它增加1,则值会上升得太快.

有没有办法做一些事情,每10个像素的平移做这个,或类似的东西?

jsz*_*ski 19

您正在寻找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
    }
}
Run Code Online (Sandbox Code Playgroud)