1

UIPanGestureRecognizerボタンを2点間でスライドさせるために使用しようとしています(ボリュームスライダーのように)。次のコードを使用すると、ボタンを前後にスライドできますが、ボタンは毎回同じポイントで停止しません (つまり、右にスライドすると、本来あるべき場所で停止する場合もあれば、停止する場合もあります +/ - あるべき場所から 10 ピクセル)。私は何を間違っていますか?

- (void)handlePan:(UIPanGestureRecognizer *)recognizer {

    CGPoint location = [recognizer locationInView:self];


    // 1
    if (recognizer.state == UIGestureRecognizerStateBegan) {
        // if the gesture just started, record current center location
        _originalCenter = self.sliderButton.center;
    }

    // 2
    if (recognizer.state == UIGestureRecognizerStateChanged) {
        // move the checkmarks and main label based on touch
        //CGPoint translation = [recognizer translationInView:self];

        // move slider button
        if (location.x < 70 + 178 && location.x > 70) {
            self.sliderButton.center = CGPointMake(location.x,  _originalCenter.y);
        } 

        // determine whether the item has been dragged far enough to initiate a removal
        if (location.x > 170 + 70) {
            _draggedToEnd = YES;
        } else {
            _draggedToEnd = NO;
        }
    }

    // 3
    if (recognizer.state == UIGestureRecognizerStateEnded) {

        if (_draggedToEnd) {
            // notify the delegate that this item should be deleted
            [self buttonDraggedToEnd];
        }

    }
}
4

0 に答える 0