当我在一种自定义按钮中设置图像时(正常情况下),画外音模式是说图像名称,如何在按钮图像视图中禁用它?

2lpgd968  于 2022-10-23  发布在  Swift
关注(0)|答案(2)|浏览(157)

我已经创建了一个自定义按钮,并设置了两个图像,一个用于正常模式,另一个用于选定模式。但当按钮未被选中时,画外音总是显示正常的图像名称文本。我试了很多,但没能禁用它。
当我禁用按钮ImageView辅助功能时,它不起作用。

button.imageView?.isAccessibilityElement = false

当我禁用按钮辅助功能时,画外音在辅助功能模式下无法工作。

button.isAccessibilityElement = false

如果我删除“.Normal”模式映像,则它可以工作,但在那里不会考虑/使用正常模式映像功能。我经常冲浪。帮助任何人,提前表示感谢。
代码:

self.setImage(UIImage.init(named: imageName1), for: .normal)
self.setImage(UIImage.init(named: imageName1), for: .selected)
iq0todco

iq0todco1#

你可以用一个简单的函数做到这一点,这是一个例子。
在控制器类下声明您的图像和按钮:

let newButton: UIButton = {
    let button = UIButton(type: .system)
    button.backgroundColor = .red
    button.tintColor = .white
    button.imageView?.contentMode = .scaleAspectFit
    button.clipsToBounds = true

    return button
}()

let image1 = UIImage(named: "magnifier") // image in my assets
let image2 = UIImage(named: "user") // image in my assets

在viewDidLoad中,将addTarget加载到您的按钮并调用控制函数,在我的例子中:

handleCange()
newButton.addTarget(self, action: #selector(handleCange), for: .touchUpInside)

现在设置控制变量和handleCange()函数

var controlButtonState = false

@objc fileprivate func handleCange() {

    if controlButtonState == true {
        newButton.setImage(image1, for: .normal)
        controlButtonState = false
    } else {
        newButton.setImage(image2, for: .normal)
        controlButtonState = true
    }
}
ajsxfq5m

ajsxfq5m2#

我找到了另一个解决方案。我认为这是一个适当的解决方案。尽管如此,我还是分享了这个替代解决方案。如果有人得到任何适当的解决方案,这个问题是悬而未决的。谢谢!

import UIKit

struct RadioViewControllerConstant {
    static let dayImage = "RadioButtonDontSelect"
    static let dayImageSelected = "RadioButtonSelect"
}

class RadioViewController: UIViewController {

    @IBOutlet weak var button1: UIButton!
    @IBOutlet weak var button2: UIButton!

    let image1 = UIImage(named: RadioViewControllerConstant.dayImageSelected)
    let image2 = UIImage(named: RadioViewControllerConstant.dayImage)
    var controlButtonState1 = false
    var controlButtonState2 = false

    override func viewDidLoad() {
        super.viewDidLoad()

        setVO()
    }

    func setVO() {
        button1.accessibilityTraits = .none
        button2.accessibilityTraits = .none
        button1.isSelected = true
        button2.isSelected = true

        handleCange1()
        handleCange2()

        button1.addTarget(self, action: #selector(handleCange1), for: .touchUpInside)
        button2.addTarget(self, action: #selector(handleCange2), for: .touchUpInside)
    }

    @objc fileprivate func handleCange1() {
        if controlButtonState1 == true {
            button1.imageView?.accessibilityLabel = "Radio button deselected"
            button1.setImage(image2, for: .selected)
            controlButtonState1 = false
        } else {
            button1.imageView?.accessibilityLabel = "Radio button selected"
            button1.setImage(image1, for: .selected)
            controlButtonState1 = true
        }
    }

    @objc fileprivate func handleCange2() {
        if controlButtonState2 == true {
            button2.imageView?.accessibilityLabel = "Radio button deselected"
            button2.setImage(image2, for: .selected)
            controlButtonState2 = false
        } else {
            button2.imageView?.accessibilityLabel = "Radio button selected"
            button2.setImage(image1, for: .selected)
            controlButtonState2 = true
        }
    }
}

相关问题