4

这听起来可能很有趣,但我花了几个小时尝试使用 UIView 和一些触发器重新创建一个具有真实旋转的旋钮。我实现了目标,但现在我不知道如何知道旋钮是向左还是向右旋转。数学中最相关的部分在这里:

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [触摸任何对象];
    CGPoint pt = [触摸 locationInView:self];

    浮动 dx = pt.x - iv.center.x;
    浮动 dy = pt.y - iv.center.y;
    浮动 ang = atan2(dy,dx);

    //进行旋转
    如果(deltaAngle == 0.0){
        deltaAngle = ang;
        initialTransform = iv.transform;
    }别的
    {
        浮动角度Dif = deltaAngle - ang;
        CGAffineTransform newTrans = CGAffineTransformRotate(initialTransform, -angleDif);
        iv.transform = newTrans;
        currentValue = [self goodDegrees:radiansToDegrees(angleDif)];
    }
}

理想情况下,我可以利用一个数值来告诉我旋转是正的还是负的。

4

2 回答 2

2

如果您的旋钮的中心点是您用于旋钮的图像的中心,那么您应该能够检测到触摸是否从中心的左侧/右侧开始并向上/向下移动。如果触摸从左侧开始并向下移动,则它正在向左旋转。对于从中心另一侧开始的触球,反之亦然。您可以通过将连续的 x 坐标放置在 touchesDidMove 方法中的数组中并进行简单比较来检测触摸是向上还是向下移动。

于 2010-03-20T21:09:33.650 回答
0

谢谢卸妆。这接近我所需要的,但最后,由于旋钮对象正在将事件传递给控制器​​类,我需要一种方法来测量旋转值......即:340* 在 CClockWise 处为 94%。无论如何,我最终使用上面的方法解决了这个问题,并将 currentValue 传递给了一个委托。然后,委托将采用该方法并使用它自己的私有浮点数,比较该值是高于还是低于收到的最后一个值:

//delegate 使用私有值从上次回调开始测量 #pragma mark UIKnobViewDelegate - (void)dialValue:(float)value { if (lastValue == 0.00) { lastValue = lastValue; } 如果(值

从那里,我们的控制器可以做任何它喜欢的事情

于 2010-03-21T12:32:56.097 回答