2 points par GN⁺ 2025-09-03 | 1 commentaires | Partager sur WhatsApp
  • Le mode de sélection de l’heure dans l’app Alarme de l’iPhone n’est pas basé sur un design circulaire
  • En apparence, il ressemble à une interface rotative, mais il s’agit en réalité d’une longue liste
  • Cela donne à l’utilisateur l’impression de faire défiler un élément sans fin
  • Cet exemple attire l’attention des développeurs et des designers UX comme cas d’illusion d’interface utilisateur
  • Comprendre sa mise en œuvre concrète peut servir de référence pour le développement d’apps

Structure du sélecteur d’heure dans l’app Alarme de l’iPhone

  • Dans l’app Alarme de l’iPhone, le sélecteur utilisé pour régler l’heure semble, en surface, prendre la forme d’une roue circulaire
  • Pourtant, ce sélecteur est en réalité implémenté comme une très longue liste avec un début et une fin bien définis
  • Lors du défilement, il donne l’illusion qu’on peut continuer à tourner indéfiniment vers le haut ou vers le bas
  • Cette méthode de mise en œuvre vise à offrir une expérience utilisateur similaire sans appliquer directement une interface circulaire
  • Les développeurs conçoivent ainsi l’interface pour qu’elle paraisse circulaire en utilisant une liste à défilement quasi infini

Point de vue des développeurs et de la conception UX

  • Cette approche montre qu’il est possible de remplacer une interface circulaire complexe avec une simple liste
  • En réalité, on ne passe pas d’une extrémité de la liste à l’autre dans le sens opposé ; la liste contient simplement assez d’éléments pour que l’utilisateur atteigne difficilement ses limites
  • Ce design exploite une illusion d’interface utilisateur afin d’offrir l’expérience attendue par l’utilisateur
  • C’est un exemple montrant qu’au moment de développer une app, une simple implémentation de liste peut préserver l’utilité et la facilité d’usage d’une interface circulaire

Conclusion

  • Le sélecteur d’heure de l’app Alarme de l’iPhone produit un effet circulaire en faisant tourner une longue liste
  • Cela propose aux développeurs et aux designers UI/UX une direction de conception d’interface à la fois intuitive et efficace

1 commentaires

 
GN⁺ 2025-09-03
Commentaires sur Hacker News
  • Le bug vraiment pénible de l’app Alarmes — ou sa « fonctionnalité », je ne sais même pas —, c’est qu’il faut attendre que la molette de l’heure finisse de rebondir et s’arrête pour que le réglage AM/PM soit bien pris en compte. Si on se contente de balayer puis d’appuyer sur enregistrer, l’ancien réglage reste tel quel, et on se retrouve avec une alarme importante de 7 h du matin qui reste à 19 h, ce qui fait arriver en retard au travail
    • J’ai l’impression qu’aujourd’hui ils ne savent même plus coder correctement des menus. Par exemple, sur l’écran principal des listes de l’app Rappels de macOS, quand on choisit une heure dans le menu déroulant, si on relâche le bouton de la souris sur l’heure voulue puis qu’on bouge légèrement le curseur vers le haut ou le bas pendant que l’animation flash se joue, une autre heure est soudainement sélectionnée. Cela ne correspond absolument pas au comportement qui existait toujours sur macOS depuis 1984. J’ai signalé le bug il y a quelques années, mais j’imagine qu’ils ont des choses jugées plus importantes à traiter
    • Après avoir subi ce bug plusieurs fois, j’ai fini par passer complètement au format 24 heures sur tous mes appareils. Pour une interface qu’on utilise tous les jours, je trouve que l’UI iOS avec ses molettes verticales défilantes est vraiment mauvaise, tant du point de vue de l’usage que de l’esthétique. Heureusement, ils ont ajouté la possibilité de toucher le centre de la molette pour faire apparaître un pavé numérique. La saisie de l’heure au clavier est, elle, très bien conçue et efficace
    • Je croyais que j’étais le seul, mais apparemment non. Pendant tout ce temps, Apple n’a même pas réussi à faire correctement une simple alarme
    • Parmi les problèmes que j’ai eus en passant d’Android à l’iPhone, c’est de loin le plus gros. Ce qui m’énerve encore plus, c’est que quand on parle de ce genre de problème à des développeurs ou programmeurs, ils répondent toujours vaguement du style « tu ne t’y prends pas correctement », « ce n’est pas si important que ça, si ? ». (Si, c’est important, moi non plus je n’ai pas envie de faire une grasse matinée involontaire, sinon on n’aurait pas cette discussion.) C’est vraiment frustrant de voir qu’on gagne plus de 100 000 dollars par an et qu’on n’est même pas capables de corriger rapidement ce genre de petits détails. J’aimerais qu’on ait un peu de fierté et qu’on corrige franchement les bugs simples. Pourtant, le monde continue de rendre l’UX toujours plus compliquée. On vante la simplicité, mais l’UI des alarmes et celle des minuteurs sont différentes tout en se ressemblant seulement visuellement, des événements de calendrier dupliqués pourraient disparaître avec une seule ligne de regex mais restent visibles, on ne retrouve pas des contacts homonymes parce que la fusion manuelle est cachée, et quand on finit enfin par les fusionner on se retrouve avec un événement d’anniversaire en plus qu’on ne peut même pas supprimer, etc. (C’est du vécu.) J’ai l’impression qu’on rend tous les logiciels pires. Si l’IA augmente la productivité et menace les emplois, ce n’est pas parce qu’elle est magique, c’est parce qu’on a tellement abaissé nos standards de qualité. On en viendrait presque à être impressionné du simple fait que ce ne soit pas codé en Perl ou en Brainfuck
    • C’est pour cela qu’il existe la fonction d’alarme de sommeil/réveil. Son interface est vraiment correcte. On peut définir un planning hebdomadaire, et quand on ajuste l’heure de l’alarme, l’UI en forme d’horloge circulaire montre visuellement combien de temps de sommeil il reste
  • Il y a 10 ans déjà, une bonne app d’alarme sur smartphone ressemblait à ça : voir UI du réveil du Nokia N9. Il y a aussi une discussion Hacker News à ce sujet
    • L’app Google Clock propose aussi des fonctions similaires. Il y a un slider sur l’écran principal, un sélecteur d’heure circulaire (que je n’aime pas particulièrement), et un toast indiquant le temps restant avant l’alarme. Il ne manque que les options « tous les jours » / « désactivé »
    • L’app Horloge d’Android est plutôt bonne et ressemble beaucoup à l’app d’alarme du Nokia N9. Je suis passé à l’iPhone au début de l’année, et les divers problèmes d’UI sont vraiment pénibles. J’en ai assez de cette molette rotative lente, et le message de confirmation du genre « alarme dans x heures » proposé sur Android me manque énormément après chaque réglage. Je déteste particulièrement les sélecteurs numériques. Chaque fois que je dois régler l’âge d’enfants dans l’app Hilton, ça me stresse de devoir faire tourner cette molette. Je ne comprends pas d’où vient la réputation d’iOS comme quelque chose de magique, agréable et intuitif. J’ai déjà envie de retourner sur Pixel
    • Fait amusant, l’écran de configuration des horaires de sommeil accessible via l’app Santé sur iOS ressemble énormément au réveil du Nokia N9
    • Il est important d’avoir un vrai smartphone digne de ce nom. C’est vraiment dommage que Nokia ait abandonné le marché juste après avoir sorti l’un de ses meilleurs produits
    • Beaucoup de jeunes aujourd’hui ne savent plus lire une horloge à aiguilles, donc si on vise le grand public, il faut aussi en tenir compte
  • À minima, les minutes/secondes devraient être réglées via une liste courte permettant d’aller rapidement sur 00 en une seule fois. Dans une app PalmOS appelée BigClock, toucher la partie haute de chaque chiffre l’incrémentait de 1, toucher la partie basse le décrémentait de 1 ; c’était très rapide et permettait une saisie prévisible. Même sans retour visuel tape-à-l’œil comme le rebond d’une molette, on pouvait choisir facilement l’heure voulue. Présentation de BigClock 1, Présentation de BigClock 2
    • Il me suffirait juste d’un clavier — pavé virtuel ou physique, peu importe. En quatre frappes maximum, c’est terminé
  • L’app Horloge d’iOS est vraiment médiocre. Maintenant qu’AlarmKit arrive dans iOS 26, je suis vraiment content qu’on puisse enfin créer ma propre app d’alarme personnalisée. Il manquait des fonctions pourtant évidentes comme « désactiver juste pour demain tout en gardant l’alarme répétée », sans parler de l’absence d’alarmes liées au calendrier
    • Si on utilise la fonction Sommeil, ce type de fonction « désactiver seulement demain » est déjà disponible depuis des années à la place d’une alarme classique. Lorsqu’on modifie un horaire de sommeil, il demande si l’on veut changer tout le planning ou le désactiver une seule fois
    • Le fait qu’Apple ouvre directement la possibilité de créer des apps d’alarme donne l’impression d’une énorme faille de sécurité
    • Si on utilise un planning de sommeil, on peut ignorer seulement la prochaine alarme ou définir des heures de réveil différentes selon les jours. Tout cela se configure directement au même endroit que les alarmes classiques
    • Personnellement, je ne trouve pas ça si mauvais ; au contraire, c’est simple, donc compréhensible pour une app par défaut
  • Je me demande si ce code n’a vraiment jamais été rouvert depuis sa rédaction, ou s’il a survécu jusque dans une réécriture complète. Les anciens iPhone avaient déjà une mauvaise réputation à cause d’alarmes qui se déréglaient avec les fuseaux horaires ou qui ne sonnaient pas correctement lors des changements d’heure d’été Bug d’alarme iPhone – problème de fuseau horaire / heure d’été
    • Cela n’a rien à voir avec les fuseaux horaires ni avec l’app Horloge. Je pense que cette limite vient d’un composant UI système appelé UIPickerView. J’ai un « bug » semblable dans ma propre app
    • Je pense que c’est le résultat d’une croissance organique. Au départ, c’était probablement une liste A-Z, puis quelqu’un a voulu en faire une molette rotative ; au niveau UI, la solution la plus simple a dû être de répéter plusieurs fois une liste finie, et cette approche est simplement restée. Par exemple, une liste finie en HTML se fabrique très facilement, mais une liste infinie virtualisée en JS devrait probablement être reportée à chaque changement de framework (par exemple avec un passage à SwiftUI)
    • Comme il est extrêmement difficile de créer une liste circulaire infinie en réutilisant en boucle les mêmes quelques composants, du code brutal du style (0..60).times(50).flatten() règle 99 % du problème avec 1 % d’effort. Si le souci n’apparaît en QA qu’au moment où l’on fait défiler la liste jusqu’au bout, c’est typiquement le genre de sujet que Product remontera éventuellement. Qui s’en soucierait vraiment ?
  • C’est une excellente bidouille pour éviter de développer un widget personnalisé. Applaudissements à l’ingénieur anonyme
  • Ce fonctionnement est resté caché pendant plus de 10 ans. Cela vaut la peine de réfléchir à une vraie solution
    • Je pense que le pragmatisme vaut mieux que le perfectionnisme
  • Ce que je trouve intéressant ici, c’est que le minuteur et l’alarme ont des implémentations distinctes et très éloignées l’une de l’autre. Dans l’alarme, les minutes bouclent, mais pas dans le minuteur. Je ne comprends pas pourquoi deux interfaces aussi proches ont été implémentées différemment. Je me demande aussi pourquoi ce n’est même pas réellement circulaire. À mes yeux, c’est juste du code qui ajoute de la complexité inutilement
  • Comme beaucoup de commentaires ici disent en avoir assez des bugs d’alarme d’iOS, je laisse une astuce pour ceux qui sont dans le même cas. Sharp vend plusieurs réveils bon marché et corrects. Pour 5 à 12 dollars, on peut se libérer définitivement de ce genre de bug. En prime, le premier appareil qu’on touche le matin n’est plus le smartphone qui bousille le cerveau, et c’est probablement le plus gros avantage. Personnellement, le modèle Sharp Twin Bell que j’ai acheté chez Walmart était le plus cher, et il coûtait quand même seulement 12,63 dollars
    • J’utilise le même modèle. La meilleure caractéristique, que je n’avais jamais connue avec les anciens réveils numériques, c’est qu’il faut régler l’alarme soi-même chaque soir. Il n’y a qu’un interrupteur marche/arrêt ; une fois l’alarme déclenchée, il faut l’éteindre, puis attendre au moins 12 heures avant de la rallumer, sinon elle risque de sonner à 20 h. Du coup, j’ai pris l’habitude chaque soir de vérifier mon planning puis d’activer l’alarme, et je ne risque plus d’oublier les jours fériés ni un réveil inhabituel tôt le matin. Et comme elle est vraiment très bruyante, je ne me suis jamais rendormi après l’avoir entendue
  • Je ne comprends absolument pas pourquoi l’emplacement des boutons snooze et stop est inversé entre l’alarme et le minuteur. Dans un cas, le bouton stop est au centre de l’écran, dans l’autre il est en bas. Je me demande pourquoi ce genre de détail n’a pas été standardisé
    • Le matin, à moitié endormi, quand je tâtonne pour attraper mon téléphone, il y a à l’endroit habituel ce grand bouton snooze orange vif, facile à presser. Pour être vraiment réveillé et arrêter l’alarme, il faut appuyer sur le bouton stop gris, déplacé ailleurs, et ce n’est qu’à ce moment-là que l’alarme s’arrête. Si on désactive le snooze dans les réglages de l’alarme, on obtient comme pour le minuteur un grand bouton stop orange au centre. Mais comme ce design était apparemment trop intuitif, j’ai entendu dire qu’il disparaîtrait dans iOS 26 au motif que les deux boutons se ressemblaient trop. C’est vraiment regrettable que l’essentiel, pour une alarme, soit désormais son apparence
    • Frère, je veux juste te dire merci. Ce manque de petites attentions dans les détails m’a fait souffrir pendant des années