Close Menu
geekfence.comgeekfence.com
    What's Hot

    Apple, the storage company – Computerworld

    February 23, 2026

    The Hidden Cost of Agentic Failure – O’Reilly

    February 23, 2026

    Top 5 Synthetic Data Generation Products to Watch in 2026

    February 23, 2026
    Facebook X (Twitter) Instagram
    • About Us
    • Contact Us
    Facebook Instagram
    geekfence.comgeekfence.com
    • Home
    • UK Tech News
    • AI
    • Big Data
    • Cyber Security
      • Cloud Computing
      • iOS Development
    • IoT
    • Mobile
    • Software
      • Software Development
      • Software Engineering
    • Technology
      • Green Technology
      • Nanotechnology
    • Telecom
    geekfence.comgeekfence.com
    Home»iOS Development»Accessibility in SpeakerClock 1.3.1 | Cocoanetics
    iOS Development

    Accessibility in SpeakerClock 1.3.1 | Cocoanetics

    AdminBy AdminFebruary 23, 2026No Comments3 Mins Read0 Views
    Facebook Twitter Pinterest LinkedIn Telegram Tumblr Email
    Accessibility in SpeakerClock 1.3.1 | Cocoanetics
    Share
    Facebook Twitter LinkedIn Pinterest Email


    You can now fully operate SpeakerClock with no or low vision. We gave SpeakerClock the full Accessibility treatment. In this article I describe some of the things I learned adding accessibility features to SpeakerClock, now that it is fully written in SwiftUI.

    SpeakerClock’s UI is divided into 3 sections, the presets at the top, the LED timer as big as possible in the center and the phase “traffic light” at the bottom.

    The main interaction gesture is to horizontally swipe over the LED digits to change the timer. This kind of gesture is not possible when VoiceOver is active because there you can pan over the screen to quickly get to the hot spots of interactive elements.

    I solved this by having individually adjustable sub-elements for the minutes and seconds while the timer is not running. This way you can swipe vertically to adjust the minutes and seconds separately.

    There are three kinds of standard gestures for Voice-Over which I made full use of:

    1. double-tap with single finger to select an element
    2. double-tap with two fingers to perform a “magic tap”
    3. draw a Z with two fingers to “escape”

    I used #1 for the single-tap function of the preset and speaking phase buttons. #2 substitutes for the long press. The rationale is that you have to consciously tap with two fingers instead of one to modify the presets, as to prevent you from accidentally changing them.

    In the regular flow of things, VoiceOver basically comments on the focused element and after a short pause also reads out the accessibility hint that tells the user what interactions are possible. I also used VoiceOver’s announcement notifications to give audio feedback on some interactions.

    The cherry on top is that certain timer values get red out aloud. In the yellow and green phases you get a voice prompt every minute. The phase transitions get announced as well. In the red phase there is an announcement very 15 seconds, with the final 10 seconds being accompanied by beeps.

    That felt like a reasonable amount of voice feedback for starters. I might add some configuration options at a later point.

    In this video I am demonstrating all that we discussed.

    Conclusion

    I would say my implementation is 95% perfect. There are some edge cases still – which I cannot do much about – where VoiceOver will insist of speaking something that it wouldn’t need to. Unfortunately there is no way to tell Accessibility to “shut it” for certain times when there is something more important going on.

    It cost me a lot of experimenting and the better part of a day to get to this stage. I am anxious to hear from actual users of SpeakerClock, in particular those who are visually impaired and might have use for a timer. And some regular users also asked about acoustic feedback. What sort of configuration options related to sounds might make sense?



    Also published on Medium.

    Like this:

    Like Loading…

    Related


    Tagged as: SpeakerClock

    Categories: Updates



    Source link

    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email

    Related Posts

    Comparing factory design patterns – The.Swift.Dev.

    February 22, 2026

    ios – How-To wrap Native Tabs with a custom Header?

    February 21, 2026

    Setting up a delivery pipeline for your agentic iOS projects – Donny Wals

    February 18, 2026

    Bug: “Testfield in Row of List with Movable Items”

    February 17, 2026

    Swift prototype design pattern – The.Swift.Dev.

    February 16, 2026

    Fatal ‘Index out of range’ error when using macOS simulator in Xcode but not when using iOS simulator

    February 15, 2026
    Top Posts

    Hard-braking events as indicators of road segment crash risk

    January 14, 202618 Views

    Understanding U-Net Architecture in Deep Learning

    November 25, 202516 Views

    How to integrate a graph database into your RAG pipeline

    February 8, 202610 Views
    Don't Miss

    Apple, the storage company – Computerworld

    February 23, 2026

    Happy customers don’t mind too much There’s nothing particularly wrong with that. Critics moaning about…

    The Hidden Cost of Agentic Failure – O’Reilly

    February 23, 2026

    Top 5 Synthetic Data Generation Products to Watch in 2026

    February 23, 2026

    A chat with Byron Cook on automated reasoning and trust in AI systems

    February 23, 2026
    Stay In Touch
    • Facebook
    • Instagram
    About Us

    At GeekFence, we are a team of tech-enthusiasts, industry watchers and content creators who believe that technology isn’t just about gadgets—it’s about how innovation transforms our lives, work and society. We’ve come together to build a place where readers, thinkers and industry insiders can converge to explore what’s next in tech.

    Our Picks

    Apple, the storage company – Computerworld

    February 23, 2026

    The Hidden Cost of Agentic Failure – O’Reilly

    February 23, 2026

    Subscribe to Updates

    Please enable JavaScript in your browser to complete this form.
    Loading
    • About Us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • Terms and Conditions
    © 2026 Geekfence.All Rigt Reserved.

    Type above and press Enter to search. Press Esc to cancel.