如何使用单点触摸更改 UISlider 值?

2024-03-17

我正在开发我的第一个 iOS 应用程序,其中包含UISlider。我知道当UISlider被拖拽。但对于我的应用程序,我需要通过一次触摸获取滑块的值;即如果我触摸某处UISlider, a UILabel应该显示其正确的值。

这样子可以吗。任何教程或代码都会非常有帮助。


Here tapCount is int声明的变量.h file

- (void)viewDidLoad
{
  tapCount = 0; // Count tap on Slider 

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

 - (void)sliderTapped:(UIGestureRecognizer *)g 
    {
/////////////// For TapCount////////////

        tapCount = tapCount + 1;
        NSLog(@"Tap Count -- %d",tapCount);

/////////////// For TapCount////////////

        UISlider* s = (UISlider*)g.view;
        if (s.highlighted)
            return; // tap on thumb, let slider deal with it
        CGPoint pt = [g locationInView: s];
        CGFloat percentage = pt.x / s.bounds.size.width;
        CGFloat delta = percentage * (s.maximumValue - s.minimumValue);
        CGFloat value = s.minimumValue + delta;
        [s setValue:value animated:YES];
        
        NSString *str=[NSString stringWithFormat:@"%.f",[self.slider value]];
        self.lbl.text=str;
    }

对于 Swift 用户

override func viewDidLoad()
{
    super.viewDidLoad()

    tapCount = 0
    let gr = UITapGestureRecognizer(target: self, action: #selector(self.sliderTapped(_:)))
    slider.addGestureRecognizer(gr)

}

func sliderTapped(_ g: UIGestureRecognizer) {
    
    /////////////// For TapCount////////////
    tapCount = tapCount + 1
    print("Tap Count -- \(tapCount)")
    /////////////// For TapCount////////////
    
    let s: UISlider? = (g.view as? UISlider)
    if (s?.isHighlighted)! {
        return
    }
    
    // tap on thumb, let slider deal with it
    let pt: CGPoint = g.location(in: s)
    let percentage = pt.x / (s?.bounds.size.width)!
    let delta = Float(percentage) * Float((s?.maximumValue)! - (s?.minimumValue)!)
    let value = (s?.minimumValue)! + delta
    s?.setValue(Float(value), animated: true)
    let str = String(format: "%.f", slider.value)
    lbl.text = str
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用单点触摸更改 UISlider 值? 的相关文章

随机推荐