El mecanismo es similar al empleado en HTML, pero en vez de usar el atributo tabindex, se emplea la propiedad accessibilitySortPriority. En el artículo se incluyen algunos vídeos de demostración y también algunos fragmentos de código:
// Setting the reversed priorities
func playersByPosition() -> [[PlayerPrioritized]] {
var players = awayLineup.reversed() // from forward to goalkeeper
var sectors = [[PlayerPrioritized]]()
var priority = viewSortingPriority
for (i, sector) in formation.reversed().enumerated() {
// creating inner array per formation sector
sectors.append([PlayerPrioritized]())
for _ in 0..<sector {
// get and remove first player from list for next iteration
let player = players.removeFirst()
sectors[i].append(PlayerPrioritized(player: player, priority: priority))
priority += 0.08 // increase priority to next player
}
}
return sectors
}
// AwayTeamView
var body: some View {
VStack {
Text(away.lineUpHeading)
...
// will be higher than first player
.accessibilitySortPriority(viewSortingPriority + 0.95)
ForEach(playersByPosition(), id: \.self) { sector in
HStack {
ForEach(sector, id: \.self) { player in
PlayerView(model: player)
.accessibilitySortPriority(player.priority)
}
}
}
}
}
Y también:
// LineUps View
var body: some View {
ScrollView {
HomeTeamView(home: homeTeam)
.accessibilitySortPriority(3)
AwayTeamView(away: awayTeam,
sortingPriority: 2)
Text("Substitutes")
.accessibilitySortPriority(1)
HStack {
BenchView(team: homeTeam)
.accessibilitySortPriority(0.9)
BenchView(team: awayTeam)
.accessibilitySortPriority(0.8)
}
}
}
No hay comentarios:
Publicar un comentario