Buscador

miércoles, 26 de noviembre de 2025

Orden de tabulación (deslizamiento) en iOS

En Accessible iOS design: how Forza Football included blind users se explica cómo modificar el orden de tabulación (deslizamiento, swipe) en iOS.

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: