Оболочку свойств @AppStorage невозможно переключить с помощью VoiceOver

#swift #swiftui #accessibility #voiceover #property-wrapper

#swift #swiftui #Специальные возможности #voiceover #оболочка свойств

Вопрос:

Я пытаюсь использовать новую оболочку @property в iOS 14 @AppStora&e. Похоже, что ее никогда не удастся переключить с помощью VoiceOver, если я использую ее в режиме переключения. Обычное свойство @State private var работает нормально. Я могу подтвердить, что они работают, когда VoiceOver не включен.

  1. Является ли это проблемой доступности, которую я могу решить самостоятельно?
  2. Является ли это ошибкой 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 (которые являются структурами).