我創建了一個自定義按鈕并設定了兩個影像,一個用于正常,另一個用于選定模式。但是,當未選擇按鈕時,畫外音總是說出正常的影像名稱文本。我已經嘗試了很多但無法禁用它。
當我禁用按鈕 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)
uj5u.com熱心網友回復:
你可以用一個簡單的函式來做到這一點,這是一個例子......
在控制器類下宣告您的影像和按鈕:
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() func
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
}
}
uj5u.com熱心網友回復:
基本上,這是不可能的間接方式。另一方面,我們可以使用accessibilityLabel
uj5u.com熱心網友回復:
我找到了一個替代解決方案。我認為這不是一個適當的解決方案。盡管如此,我正在分享這個替代解決方案。如果有人得到任何適當的解決方案,這個問題是開放的。謝謝!
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
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/521835.html
