ios - UISlider 拇指在不接触拇指的情况下移动

标签 ios objective-c uislider

我在我的项目中使用 UISlider。通常,只要我们触摸并拖动拇指,拇指就会移动。但是,就我而言,当我触摸到它的边缘但没有触摸它时,拇指移动了。像这样:

enter image description here

这是我的代码:

self.slider = [[UISlider alloc] initWithFrame:CGRectMake(30, [UIScreen mainScreen].bounds.size.height - 200, [UIScreen mainScreen].bounds.size.width-30, 30)];
[self.view addSubview:self.slider];

为什么拇指移动了,如何处理?我的目标是,只有当我触摸并拖动它时,拇指才会移动,而当我触摸它的边缘时,它不会移动。

最佳答案

尝试添加以下代码:

  - (void)viewDidLoad
 {

     UITapGestureRecognizer *tapGest = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(sliderTapped:)];
     [slider addGestureRecognizer:tapGest];

 }

 - (void)sliderTapped:(UIGestureRecognizer *)tapGest 
 {
        UISlider* slider = (UISlider*)tapGest.view;
        if (slider.highlighted)
            return; // tap on thumb, let slider deal with it
        CGPoint pt = [tapGest locationInView: slider];
        CGFloat percentage = pt.x / slider.bounds.size.width;
        CGFloat delta = percentage * (slider.maximumValue - slider.minimumValue);
        CGFloat value = slider.minimumValue + delta;
        [slider setValue:value animated:YES];

  }

关于ios - UISlider 拇指在不接触拇指的情况下移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39524378/

相关文章:

ios - 如何分三个阶段处理 slider ?

ios - UISlider 每毫秒都不会顺畅地滴答作响

ios - 如何在 iOS/OS X 上使用ripemd128进行散列?

ios - 如何删除 NSString 对象中多余的转义字符

ios - Apple Instruments 在分析内存分配时会降低应用程序的速度

ios - 如何在不更改主数组中原始顺序的情况下按 BOOL 快速排序?

ios - 什么时候应该使用数据源(协议(protocol))与在属性或初始化上设置类数据?

ios - 我如何使用 sender 参数来确定选择了什么 UIImageView?

ios - 导入 UIKit 而不是特定的 UIKit 组件是否有任何性能/编译时间优势?

iphone - 使用UISlider更改音量时如何隐藏Iphone音量框?