Как предоставить элементы для автоматизации, но не для доступности в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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