我要求我必须使用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滑块它会正常工作。
答案 0 :(得分:3)
当滑块移动时,它还会计算它的新值并调用valueChanged
。这可能会干扰您额外的UIControlEventTouchDragInside
处理程序。
如果slider.continuous
设置为YES
,您可以尝试将标签移动代码移至valueChanged
处理程序。
当然触摸位置在此方法中是未知的,因此需要根据滑块的其他属性计算:frame.origin.x
,frame.size.width
,minimumValue
,maximumValue
和{{ 1}}