2 Punkte von GN⁺ 2025-09-03 | 1 Kommentare | Auf WhatsApp teilen
  • Die Methode zur Zeitauswahl in der Wecker-App des iPhones basiert nicht auf einem kreisförmigen Design
  • Auf den ersten Blick wirkt sie wie eine rotierende Benutzeroberfläche, tatsächlich ist sie aber als lange Liste aufgebaut
  • Dadurch entsteht beim Scrollen der Eindruck, als gäbe es kein Ende
  • Das wird von Entwicklern und UX-Designern als Beispiel für eine UI-Illusion beachtet
  • Das Verständnis der tatsächlichen Implementierung ist eine nützliche Referenz für die App-Entwicklung

Aufbau des Zeitwählers in der iPhone-Wecker-App

  • Der Wähler zum Einstellen der Uhrzeit in der Wecker-App des iPhones wirkt oberflächlich wie eine kreisförmige Drehscheibe
  • Tatsächlich ist dieser Wähler jedoch als sehr lange Liste mit festem Anfang und Ende implementiert
  • Beim Scrollen vermittelt er den Eindruck, man könne unendlich weiter nach oben oder unten drehen
  • Diese Umsetzungsweise soll auch ohne eine echte kreisförmige Benutzeroberfläche ein ähnliches Nutzererlebnis bieten
  • Entwickler gestalten die Benutzeroberfläche so, dass sie mithilfe einer Liste mit quasi unendlichem Scrollen wie ein Kreis wirkt

Perspektive von Entwicklern und UX-Design

  • Mit diesem Ansatz lässt sich eine komplexe kreisförmige Benutzeroberfläche allein durch eine einfache Liste ersetzen
  • Tatsächlich springt die Liste an ihren Enden nicht in die Gegenrichtung, aber durch die große Anzahl an Einträgen erreichen Nutzer diese Grenzen nur schwer
  • Dieses Design nutzt eine UI-Illusion, um das von Nutzern erwartete Erlebnis zu erzeugen
  • Es ist ein Beispiel dafür, wie sich in der App-Entwicklung allein mit einer Listenimplementierung der Nutzen und die Bedienbarkeit eines kreisförmigen Interfaces erreichen lassen

Fazit

  • Der Zeitwähler in der iPhone-Wecker-App erzeugt seinen kreisförmigen Effekt, indem er eine lange Liste scrollt
  • Das zeigt Entwicklern sowie UI/UX-Designern eine intuitive und zugleich effiziente Richtung für die Gestaltung von Benutzeroberflächen auf

1 Kommentare

 
GN⁺ 2025-09-03
Hacker-News-Kommentare
  • Ein wirklich lästiger Bug (oder vielleicht ist es auch ein Feature, keine Ahnung) in der Alarm-App ist, dass die Einstellung für AM/PM nur dann korrekt übernommen wird, wenn man wartet, bis das Zeitrad auspendelt und stehen bleibt. Wenn man einfach wischt und auf Speichern tippt, bleibt die vorherige Einstellung bestehen, sodass ein wichtiger 7-Uhr-morgens-Alarm auf 19 Uhr stehen bleibt und man zu spät zur Arbeit kommt.
    • Heutzutage wirkt es, als könne man nicht einmal Menüs ordentlich programmieren. Wenn man zum Beispiel in der Hauptlistenansicht der Erinnerungen-App unter macOS das Zeit-Dropdown auswählt, dann die Maustaste über der gewünschten Zeit loslässt und den Cursor während der Flash-Animation leicht nach oben oder unten bewegt, wird plötzlich eine andere Zeit ausgewählt. Das passt überhaupt nicht zu dem Verhalten, das auf macOS seit 1984 immer gleich war. Ich habe das vor ein paar Jahren als Bug gemeldet, aber vermutlich gibt es Wichtigeres.
    • Nachdem mich dieser Bug mehrfach erwischt hat, bin ich am Ende auf all meinen Geräten komplett auf das 24-Stunden-Format umgestiegen. Für eine Oberfläche, die man täglich benutzt, ist die vertikale Scrollrad-UI von iOS sowohl bei der Benutzbarkeit als auch optisch wirklich schlecht. Zum Glück kam immerhin die Funktion dazu, dass beim Tippen in die Mitte des Rads ein Zahlenfeld erscheint. Die Eingabe der Uhrzeit per Keypad ist sehr gut gestaltet und effizient.
    • Ich dachte, ich wäre der Einzige mit diesem Problem, aber offenbar nicht. Erstaunlich, dass Apple in all der Zeit nicht einmal einen Alarm ordentlich hinbekommt.
    • Das ist das größte Problem, das ich hatte, seit ich von Android auf das iPhone gewechselt bin. Noch frustrierender ist aber, dass Entwickler oder Programmierer bei solchen Themen immer sofort mit so etwas kommen wie „Machst du es vielleicht einfach nicht richtig?“ oder „Ist das wirklich so wichtig?“. (Doch, ist es — ich will schließlich nicht verschlafen, und genau deshalb führen wir überhaupt dieses Gespräch.) Wir verdienen über 100.000 Dollar im Jahr und schaffen es trotzdem nicht, selbst solche Kleinigkeiten schnell zu beheben. Ich wünschte, man hätte mehr Stolz und würde einfache Bugs beherzt reparieren. Stattdessen wird UX überall immer komplizierter. Man predigt Einfachheit, aber Alarm- und Timer-UI unterscheiden sich, sehen nur visuell ähnlich aus, doppelte Kalendereinträge bleiben sichtbar, obwohl ein einziger Regex sie beseitigen könnte, und Kontakte mit gleichem Namen lassen sich nicht finden, weil der manuelle Zusammenführungsprozess versteckt ist — und wenn man sie dann doch mühsam zusammenführt, entsteht noch ein zusätzlicher Geburtstagseintrag, den man nicht einmal löschen kann. (Alles selbst erlebt.) Ich glaube, wir machen Software insgesamt schlechter. Nicht AI übernimmt wegen höherer Produktivität die Jobs, sondern weil wir unsere Qualitätsmaßstäbe viel zu weit gesenkt haben. Inzwischen ist man schon fast beeindruckt, wenn etwas nicht in Perl oder Brainfuck geschrieben ist.
    • Dafür gibt es die Schlaf-/Weckalarm-Funktion. Deren UI ist wirklich gut. Man kann einen Wochenplan festlegen, und wenn man die Alarmzeit anpasst, zeigt eine kreisförmige Uhr-UI auch visuell, wie lange man noch schlafen kann.
  • Vor zehn Jahren sahen gute Smartphone-Alarm-Apps noch so aus: siehe Nokia N9 Alarm Clock UI. Dazu gibt es auch einen Hacker-News-Diskussionsfaden.
    • Die Google-Clock-App bietet Ähnliches. Es gibt auf dem Hauptbildschirm einen Slider, einen kreisförmigen Zeitwähler (den ich persönlich nicht bevorzuge) und eine Toast-Benachrichtigung, die anzeigt, wie viel Zeit bis zum Alarm bleibt. Es fehlen nur Optionen wie „täglich“/„deaktiviert“.
    • Die Android-Uhr-App ist ziemlich gut und sieht der Nokia-N9-Alarm-App ähnlich. Ich bin Anfang des Jahres aufs iPhone gewechselt, und die verschiedenen UI-Probleme sind extrem störend. Ich habe das langsame Drehrad satt und vermisse die Bestätigung wie „Alarm in x Stunden“ von Android sehr. Besonders der Zahlen-Spinner ist wirklich furchtbar. Jedes Mal, wenn ich in der Hilton-App wieder das Alter der Kinder einstellen muss, stresst mich dieses Gedrehe am Zahlenrad. Ich verstehe nicht, wie iOS den Ruf bekommen hat, magisch, angenehm und intuitiv zu sein. Ich will inzwischen wieder zu einem Pixel zurück.
    • Lustigerweise sieht der Bildschirm zur Einrichtung des Schlafplans, den man in iOS über die Health-App erreicht, der Nokia-N9-Weckeruhr sehr ähnlich.
    • Ein richtig gutes Smartphone ist wichtig. Wirklich schade, dass Nokia das Geschäft aufgegeben hat, direkt nachdem sie ihr bestes Produkt herausgebracht hatten.
    • Viele junge Leute können heute keine Zeigeruhr mehr lesen, deshalb sollte man das mitbedenken, wenn man für die breite Masse gestaltet.
  • Wenigstens Minuten/Sekunden sollten sich über eine kurze Liste einstellen lassen, sodass man schnell wieder auf 00 kommt. In einer PalmOS-App namens BigClock konnte man oben auf jede Ziffer tippen, um sie um 1 zu erhöhen, und unten, um sie um 1 zu verringern; das war sehr schnell und vorhersehbar. Man konnte die gewünschte Zeit leicht auswählen, ganz ohne visuelles Feedback wie das Nachschwingen eines Scrollrads. BigClock Intro 1, BigClock Intro 2
    • Eigentlich bräuchte es nur eine Tastatur (virtuelles Keypad ist okay, physisch auch egal). Maximal vier Eingaben, dann ist man fertig.
  • Die iOS-Uhr-App ist wirklich schlecht. Jetzt, wo mit iOS 26 AlarmKit kommt, freue ich mich sehr darauf, endlich meine eigene benutzerdefinierte Alarm-App bauen zu können. Ganz selbstverständliche Funktionen wie „Wiederholungsalarm beibehalten, aber nur morgen aussetzen“ haben gefehlt, ebenso Dinge wie kalenderbasierte Alarme.
    • Wenn man die Schlaffunktion nutzt, konnte man diese Art von „nur morgen aussetzen“ statt eines normalen Alarms schon seit Jahren verwenden. Wenn man den Schlafplan ändert, wird gefragt, ob der ganze Plan geändert oder nur einmal deaktiviert werden soll.
    • Dass Apple die Berechtigung zum Bau von Alarm-Apps direkt öffnet, fühlt sich wie ein großes Sicherheitsloch an.
    • Mit dem Schlafplan kann man nur den nächsten Alarm überspringen oder je nach Wochentag unterschiedliche Weckzeiten festlegen. Man kann das direkt an derselben Stelle wie normale Alarme einstellen.
    • Ich finde es eigentlich nicht schlecht; im Gegenteil, als Standard-App ist die Einfachheit durchaus nachvollziehbar.
  • Ich frage mich, ob dieser Code seit dem Schreiben wirklich nie wieder angefasst wurde oder sogar eine Code-Neuschreibung überlebt hat. Das alte iPhone war berüchtigt dafür, dass Alarme bei Zeitzonenproblemen oder der Umstellung auf Sommerzeit nicht richtig klingelten: iPhone-Alarm-Bug – Zeitzonen-/Sommerzeitproblem
    • Das ist getrennt von Zeitzonen oder der Clock-App selbst. Ich vermute, diese Einschränkung kommt von einer UI-Komponente auf Systemebene namens UIPickerView. In meiner App gibt es einen ähnlichen „Bug“.
    • Ich glaube, das ist organisch gewachsen. Am Anfang war es vermutlich eine A-Z-Liste, aber dann wollte jemand sie rotierend machen, und auf UI-Ebene war die einfachste Lösung, eine endliche Liste mehrfach zu wiederholen, sodass es einfach so geblieben ist. Eine endliche HTML-Liste kann man zum Beispiel sehr leicht bauen, aber eine virtualisierte unendliche JS-Liste müsste man bei jedem Framework-Wechsel wieder portieren (zum Beispiel wenn auf SwiftUI umgestellt wird).
    • Einen kreisförmigen, unendlichen Listenwähler zu bauen, der dieselben wenigen Komponenten wiederverwendet, ist so schwierig, dass direkter brachialer Code wie (0..60).times(50).flatten() 99 % des Problems mit 1 % Aufwand löst. Wenn in QA nur dann ein Problem auftaucht, wenn jemand bis ans Ende der Liste scrollt, bringt Product das vielleicht irgendwann als Issue auf. Aber wen interessiert’s?
  • Das ist ein hervorragender Hack, um die Entwicklung eines benutzerdefinierten Widgets zu vermeiden. Applaus an irgendeinen zufälligen Engineer.
  • Seit über zehn Jahren war das auf diese Weise versteckt. Über eine echte Lösung könnte man langsam mal nachdenken.
    • Ich finde Pragmatismus besser als Perfektionismus.
  • Was ich interessant finde: Timer und Alarm haben voneinander getrennte Implementierungen, obwohl sie sich so ähnlich sind. Beim Alarm laufen die Minuten zyklisch durch, beim Timer nicht. Ich verstehe nicht, warum sie trotz ähnlicher Oberfläche unterschiedlich implementiert wurden. Dass es noch nicht einmal wirklich kreisförmig ist, macht es umso seltsamer. Für mich ist das nur unnötige zusätzliche Komplexität im Code.
  • Hier in den Kommentaren schreiben so viele, dass sie von iOS-Alarm-Bugs genervt sind, dass ich für ähnlich Betroffene einen Tipp dalassen möchte. Sharp verkauft mehrere günstige, ordentliche Wecker. Für 5 bis 12 Dollar kann man diese Bugs für immer loswerden. Der größte Vorteil ist noch dazu, dass das erste Gerät, nach dem man morgens greift, dann nicht ein Smartphone ist, das einem das Gehirn kaputtmacht. Mein Sharp-Twin-Bell-Modell von Walmart war persönlich das teuerste und kostet trotzdem nur 12,63 Dollar.
    • Ich benutze dasselbe Modell. Die beste Eigenschaft, die ich bei früheren digitalen Weckern nie hatte, ist, dass man den Alarm jeden Abend bewusst neu stellen muss. Es gibt nur einen Ein-/Aus-Schalter, und wenn der Alarm einmal geklingelt hat, muss man ihn ausschalten und frühestens zwölf Stunden später wieder einschalten — sonst könnte er um 20 Uhr losgehen. Dadurch habe ich mir angewöhnt, jeden Abend meinen Plan zu prüfen und den Alarmschalter einzuschalten, und ich muss mir keine Sorgen mehr machen, Feiertage oder frühe Termine zu vergessen. Außerdem ist das Ding wirklich so laut, dass ich noch nie nach dem Alarmton wieder eingeschlafen bin.
  • Ich verstehe absolut nicht, warum die Positionen der Snooze- und Stopp-Schaltflächen bei Alarm und Timer vertauscht sind. Mal ist die Stopp-Taste in der Mitte des Bildschirms, mal unten. Warum so etwas nicht standardisiert ist, ist mir ein Rätsel.
    • Wenn man morgens halb schlafend nach dem Handy tastet, trifft man leicht die große, helle orange Snooze-Taste an der gewohnten Stelle. Um den Alarm wirklich auszuschalten, muss man erst wach genug sein, die anders platzierte graue Stopp-Taste zu drücken. Nur dann hört er auf. Wenn man Snooze in den Alarmeinstellungen deaktiviert, bekommt man wie beim Timer eine große orange Stopp-Taste in der Mitte. Aber gerade weil dieses Design so intuitiv ist, habe ich gehört, dass es in iOS 26 verschwindet, weil die beiden Tasten unterschiedlich aussehen. Schade, dass beim Alarm nun offenbar das hübsche Aussehen das Wichtigste ist.
    • Bruder, ich möchte dir wirklich danken. Dieser Mangel an solchen kleinen Details hat mich jahrelang fertiggemacht.