Ios 有了UIPanGestureRecognizer,有没有一种方法可以像平移x多个像素后那样频繁地执行操作?

Ios 有了UIPanGestureRecognizer,有没有一种方法可以像平移x多个像素后那样频繁地执行操作?,ios,objective-c,uigesturerecognizer,uipangesturerecognizer,Ios,Objective C,Uigesturerecognizer,Uipangesturerecognizer,现在,我的UIPangestureRecognitor可以识别每一个平移,这是非常重要的,但由于我将其用作滑动手势来增加和减少变量的值,因此在该方法中,我只想每隔一段时间执行一次操作。如果每次检测到它时我都增加1,那么这个值上升得太快了 有没有一种方法可以做到像每10个像素平移一次这样的事情,或者类似的事情?你正在寻找的,它告诉你平移已经进行了多远,并且可以根据你的最小距离进行测试。此解决方案不包括在一个方向上来回移动的量等于最小距离的情况,但如果这对您的场景很重要,则不难添加 #define

现在,我的UIPangestureRecognitor可以识别每一个平移,这是非常重要的,但由于我将其用作滑动手势来增加和减少变量的值,因此在该方法中,我只想每隔一段时间执行一次操作。如果每次检测到它时我都增加1,那么这个值上升得太快了

有没有一种方法可以做到像每10个像素平移一次这样的事情,或者类似的事情?

你正在寻找的,它告诉你平移已经进行了多远,并且可以根据你的最小距离进行测试。此解决方案不包括在一个方向上来回移动的量等于最小距离的情况,但如果这对您的场景很重要,则不难添加

#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
    }
}

我认为您希望根据用户平移的距离设置变量,而不是每条消息一次。只是提醒您TranslationView提供了距平移起点的距离,因此它绝对易于使用-与使用滑块控件完全相同。请注意,TranslationView提供了距平移起点的距离。(这不是“最近部分”的距离。)因此,基于平移设置值非常容易。事实上,这就像使用滑块一样。这是一行代码。。yourValue=[sender TranslationView:self.view].x;就这样。