Как добавить модификатор специальных возможностей в Text View, используя расширение в SwiftUI - PullRequest
1 голос
/ 18 марта 2020

Понятия не имею. Это то, что я написал. Я знаю, что это тщетная попытка.

struct HelloWorld: View {
  var body: some View {
    Text("Hello, World!")
  }
}

extension Text {
  self.accessibility(hidden: true)
}

, но я получаю эту ошибку enter image description here

ОБНОВЛЕНИЕ: Да, я думаю, я могу добавить функцию в расширение или реализовать структуру. Но я просто хочу, чтобы текстовое представление автоматически наследовало модификатор доступности.

, поэтому я могу использовать его следующим образом:

var body: some View {
    Text("Hello, World!")
  }

Это реализация структуры, созданная @ Asperi

  //thanks for your answer Asperi, but

  let sayHi = "hi"

  var body: some View {
    List {
      Section(header: HidingAccessibility {Text(self.sayHi)}) {
        Text("Hello, World!")
      }
    }
  }
}

struct HidingAccessibility<Content: View>: View {
  private var content: () -> Content
  init(@ViewBuilder _ content: @escaping () -> Content ) {
    self.content = content
  }

  var body: some View {
    content().accessibility(hidden: true)
  }
}

1 Ответ

2 голосов
/ 18 марта 2020

Вот оно

struct HelloWorld: View {
  var body: some View {
    Text("Hello, World!")
       .hideAccessibility()     // << here !
  }
}

extension Text {
  public func hideAccessibility() -> some View {   // << here !
     self.accessibility(hidden: true)
  }
}

или даже более обобщенно c способ

struct HidingAccessibility<Content: View>: View {
    private var content: () -> Content
    init(@ViewBuilder _ content: @escaping () -> Content ) {
        self.content = content
    }

    var body: some View {
        content().accessibility(hidden: true)
    }
}

struct HelloWorld: View { 
  var body: some View {
    HidingAccessibility {
        Text("Hello, World!") // << usual SwiftUI view building here
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...