1

スライダーとして機能するパンジェスチャレコグナイザーがあります。コードは次のとおりです。

- (void)minutePan:(UIPanGestureRecognizer *)gesture
{
    if ((gesture.state == UIGestureRecognizerStateChanged) ||
        (gesture.state == UIGestureRecognizerStateEnded)){

        CGPoint translation = [gesture translationInView:gesture.view.superview];

        float leftBound = gesture.view.bounds.size.width / 2.0f;
        float rightBound = gesture.view.bounds.size.width + (leftBound - 60);

        float position;
        if(gesture.view.center.x < leftBound){
            position = leftBound;
        }else if(gesture.view.center.x > rightBound){
            position = rightBound;
        }else{
            position = gesture.view.center.x + translation.x;
        }
        gesture.view.center = CGPointMake(position, gesture.view.center.y);
        [gesture setTranslation:CGPointZero inView:gesture.view.superview];
    }
}

境界として機能する別の UIView 内にジェスチャ認識機能が接続された UIView があります。左端と右端に到達する場合を除いて、正常に動作します。位置変数は、パンされたビューの幅の半分未満に設定されるべきではありませんが、コードが実行される前に画面上のビューを更新しているようです。これにより、ユーザーがドラッグしている限り、ビューが境界の外に出てちらつきます。どんな助けでも大歓迎ですありがとう。

4

0 に答える 0