2

我有一个要求,我必须使用 UISlider 移动标签上的值。我试过这段代码

[slider addTarget:self action:@selector(dragMoving:withEvent:) forControlEvents: UIControlEventTouchDragInside];

- (void)dragMoving:(UIControl *)c withEvent:ev {  
    UITouch *touch = [[ev allTouches] anyObject];
    CGPoint touchPoint = [touch locationInView:self.view];
     sliderLabe.frame = CGRectMake(touchPoint.x,250, 270, 40);
}

sliderLabel 就在滑块的下方,但是当我拖动得更快时它会给我带来奇怪的结果,但是如果我缓慢地移动 mu 滑块,它就可以正常工作。

4

1 回答 1

3

当滑块移动时,它也在计算它的新值并调用valueChanged. 这可能会干扰您的额外UIControlEventTouchDragInside处理程序。

如果slider.continuous设置为YES您可以尝试将您的标签移动代码移动到valueChanged处理程序中。

当然触摸位置在这个方法中是未知的,所以它需要从滑块的其他属性中计算出来:frame.origin.x, frame.size.width, minimumValue,maximumValuevalue

于 2012-05-23T13:20:03.543 回答