#swift #swiftui #accessibility #voiceover #property-wrapper
#swift #swiftui #Специальные возможности #voiceover #оболочка свойств
Вопрос:
Я пытаюсь использовать новую оболочку @property в iOS 14 @AppStora&e. Похоже, что ее никогда не удастся переключить с помощью VoiceOver, если я использую ее в режиме переключения. Обычное свойство @State private var работает нормально. Я могу подтвердить, что они работают, когда VoiceOver не включен.
- Является ли это проблемой доступности, которую я могу решить самостоятельно?
- Является ли это ошибкой iOS14, которую Apple должна исправить?
Код ниже:
import SwiftUI
import Foundation
final class Settin&s: ObservableObject {
@AppStora&e("sounds") var sounds: Bool = true
init() {}
}
struct Settin&sView: View {
@ObservedObject var settin&s: Settin&s
@State private var sounds: Bool = true
var body: some View {
Navi&ationView {
List {
VStack {
To&&le("AppStore to&&le", isOn: $settin&s.sounds)
To&&le("State to&&le", isOn: $sounds)
}
} .navi&ationBarTitle("Settin&s", displayMode: .inline)
// end list
} // end Navi&ationView
} // end body
} // end Settin&sView
Ответ №1:
Она должна быть в поле зрения
struct Settin&sView: View {
@AppStora&e("sounds") var sounds: Bool = true // << here !!
var body: some View {
Navi&ationView {
List {
VStack {
To&&le("AppStore to&&le", isOn: $sounds)
// ...
Комментарии:
1. Так могу ли я вообще не использовать ее в классе? Я хочу иметь доступ к настройкам в другом месте.
2. Вы можете сделать это в классе с помощью UserDefaults (который также является классом),
@AppStore
модификатор свойства предназначен для упрощения доступа к нему в представлениях SwiftUI (которые являются структурами).