UISlider通过触摸其轨道来更改值

时间:2014-08-20 16:06:15

标签: ios7

我是ios的初学者,我已经使用UISlider完成了基本功能,改变了拖动拇指的价值。但现在在我的应用程序中,我想逐渐向同一方向移动滑块的拇指,我在触摸滑块的轨道而不拖动滑块的拇指。拇指必须以2个或更多步骤到达轨道上的精确触摸位置。 我知道它需要UITouch的参与,但无法理解如何?

1 个答案:

答案 0 :(得分:0)

您需要将UISlider子类化以添加此功能。在子类化之后,您需要在子类中实现touchesBegantouchedMoved。好吧,我这是怎么做的

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    UITouch *touch = [touches anyObject];
    CGFloat maxX = CGRectGetMaxX(self.frame);
    CGFloat minX = CGRectGetMinX(self.frame);
    int value =  (maxX - minX) /(self.maximumValue - self.minimumValue);
    [self setValue:([touch locationInView:self].x - minX) / value  animated:YES];
    [self beginTrackingWithTouch:touch withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    [self continueTrackingWithTouch:[touches anyObject] withEvent:event];
}

当用户第一次点击时,你需要更多的工作来稳定一点,但我希望你明白这一点。