Как предоставить элементы для автоматизации, но не для доступности в Swift UIKit?IOS

Программируем под IOS
Anonymous
Как предоставить элементы для автоматизации, но не для доступности в Swift UIKit?

Сообщение Anonymous »

У меня есть два представления в представлении контейнера, как показано ниже
@IBOutlet weak var dataDisclosureView: UIStackView! // Main ContainerView

@IBOutlet private weak var titleLabel: UILabel! {
didSet {
titleLabel.text = "Hello"
}
}

@IBOutlet private weak var descriptionLabel: UILabel! {
didSet {
descriptionLabel.text = "World"
}
}

@IBOutlet weak var descriptionView: UIStackView! { // sub container view containing titleLabel and descriptionLabel
didSet {
descriptionView.isAccessibilityElement = true
descriptionView.accessibilityLabel = "Hello"
descriptionView.accessibilityIdentifier = "test_hello"

}
}

@IBOutlet private weak var requestButton: UIButton! {
didSet {
requestButton.isAccessibilityElement = true
requestButton.accessibilityLabel = "Request Button"
requestButton.accessibilityIdentifier = "test_button"
}
}

override func viewDidLoad() {
super.viewDidLoad()
dataDisclosureView.isAccessibilityElement = false
dataDisclosureView.accessibilityElements = [ descriptionView ?? "" ]
if #available(iOS 17.0, *) {
dataDisclosureView.automationElements = [ descriptionView ?? "",
requestButton ?? ""]
} else {
// Fallback on earlier versions
}
let requestButtonAction = UIAccessibilityCustomAction(name: "start",
target: self,
selector: #selector( request))
dataDisclosureView.accessibilityCustomActions = [ requestButtonAction ]
}

Моя проблема в том, что мне нужны идентификаторы AccessibilityIdentifers дляdescriptionLabel, titleLabel, requestButton иhintLabel(для автоматизации), а также метки доступности дляdescriptionView. и requestButton (доступность VoiceOver).
Но я не могу увидеть accessibilityIdentifier для Button, TitleLabel иdescriptionLabel в AccessibilityInspector. что я здесь делаю не так?
PS: Я также следил за видео ниже:
https://www.youtube.com/watch?v =IAqzXI3kFCk
Это рабочее решение
dataDisclosureView.accessibilityElements = [dataDisclosureView as Any,
titleLabel as Any,
descriptionLabel as Any,
requestButton as Any,
hintLabel as Any]
if #available(iOS 17.0, *) {
dataDisclosureView.automationElements = [titleLabel as Any,
descriptionLabel as Any,
requestButton as Any,
hintLabel as Any]
} else {
// Fallback on earlier versions
}

но меня это не устраивает, потому что в одном из видеороликов Apple WWDC упоминалось, что если мы хотим освободить элемент от голосовой доступности, не добавляйте его в accessibilityItems, и если мы хотим, элементы автоматизации просто добавьте его. Более подробной информации они не предоставили. Ссылка , а также добавление скриншота того, что я говорю
Изображение

По этому так и должно быть
dataDisclosureView.accessibilityElements = [dataDisclosureView as Any,
titleLabel as Any,
descriptionLabel as Any,
requestButton as Any]
if #available(iOS 17.0, *) {
dataDisclosureView.automationElements = [titleLabel as Any,
descriptionLabel as Any,
requestButton as Any,
hintLabel as Any]
} else {
// Fallback on earlier versions
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... swift-uiki

Вернуться в «IOS»