Swift 检测 UISlider 图像点击

Posted

技术标签:

【中文标题】Swift 检测 UISlider 图像点击【英文标题】:Swift Detect UISlider image tap 【发布时间】:2021-07-06 09:13:47 【问题描述】:

所以我有一个看起来像这样的UISlider: Image here

是这样设置的,所以图片不是UIImageView的,而是UISlider里面的图片: Image 2 here

我想添加一个功能,当用户按下左侧的图像时,它运行一个功能,当用户按下右侧的图像时,它运行另一个功能。这甚至可能吗?

【问题讨论】:

分享你实现的代码。 欢迎来到 Stack Overflow!请拨打tour,访问help center,并阅读asking good questions。在做了一些研究和searching 了解 SO 的相关主题之后,自己尝试一下。如果您遇到困难,请在您卡住的位置发布您的尝试记录的Minimal, Complete, and Verifiable example。人们会很乐意提供帮助。 —— 【参考方案1】:

您可以这样做。请仔细阅读cmets。

import UIKit

class ViewController: UIViewController 

    // This is linked to your storyboard layout
    @IBOutlet weak var slider: UISlider!
    
    override func viewDidLoad() 
        super.viewDidLoad()

        // Add a tap gesture recognizer to the slider
        slider.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(sliderTapped(_:))))
    

    @objc private func sliderTapped(_ tapRecognizer: UITapGestureRecognizer) 
        let location = tapRecognizer.location(in: slider)
        
        // UISlider can tell you min/max value image frames
        // CAUTION: Use images those are big enough to be easy tap targets
        // In my case, I used images of size 30x30
        let minImageRect = slider.minimumValueImageRect(forBounds: slider.bounds)
        let maxImageRect = slider.maximumValueImageRect(forBounds: slider.bounds)
        
        // Now you can check which image out of min/max was tapped
        if minImageRect.contains(location) 
            print("Min Image Tapped")
         else if maxImageRect.contains(location) 
            print("Max Image Tapped")
        
    


【讨论】:

以上是关于Swift 检测 UISlider 图像点击的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中使用 UISlider 更改 UIImageView 中的图像

在 Swift 中更改 UISlider 拇指的大小

swift 3:如何添加 UISlider?

在 Swift 中自动移动 UISlider

给 UISlider 进度条圆角 [Swift]

在swift UI中点击按钮时如何更改背景颜色和图像?