WatchUi.requestUpdate doesn't do anything in datafield (SettingsView)

I'm implementing a custom picker in the settings view of a datafield. It seems that even though the documentation of requestUpdate doesn't say anything about datafields the onUpdate is called once a second (there it does say) no matter if I call requestUpdate or not.

Question 1: is there any trick that can be done to be able to refresh the settings view immediately after a key press? It lags so much, which is annoying by itself, but it also makes inputting text very slow...

Question 2: should I open a request to add something like "requestUpdate doesn't do anything if called in datafield"?

  • I know the UX is bad, and my data field is only for watches. If I were implementing the same data field for Edges, I would just take advantage of the touch support which is available for data fields on Edges.

    My CIQ data field is "full screen" app, meaning it only works properly with a one field layout that fills the entire screen. What I do is record the time of the latest onUpdate() call. If onShow() is called within 2 seconds (or less) of the last onUpdate(), then I assume the user has quickly navigated away from my app and back again -- in this case, I flip to the next page.

    It's not great, and in fact I've found that onShow() is called under different circumstances for different generations of watches. (For older watches, my app's "gesture" is triggered when returning to the app, but for newer watches, the gesture is triggered when switching away from the app. I suppose this has something to do with the scrolling transition between data pages, where for a split second, parts of two adjacent data pages are on the screen at the same time. It actually works out the same since after a certain timeout, my app just returns to its home screen.)

    Anyway the page flipping feature is a totally optional part of the app, and it's a niche app anyway (16k downloads in 6 years, but to be fair I haven't updated it since 2021.) I mostly made it for myself. Basically I wanted a data field which could display information about laps during an activity *and* allow the user to flip between multiple pages of laps. If there was a more user friendly way to do this, such as using on-device settings as a secondary view which accepts input, I would've done it already.

  • My only problem is in the on device settings, because one of my inputs is a number so I made a custom number picker (either picks a number or a float depending on what I need)

    Unfortunately Garmin releases announcements about features that don't really exist, just to blow up the list of the new features. And they don't even pretend to fix them. It looks like on device settings can only be used with menu, menu's to chose between a predefined list of values but not to enter a number.

    Other examples of non existant features: array settings, group settings. Basically any app that needs any kind of non basic setting is stuck

  • When I tested picker redrawing was called very often so I didn't need to call requestUpdate.

    I also use settings in data field and menu PSX-2 and I use only setSubLabel and it's enough.

  • Unfortunately Garmin releases announcements about features that don't really exist, just to blow up the list of the new features. And they don't even pretend to fix them. It looks like on device settings can only be used with menu, menu's to chose between a predefined list of values but not to enter a number.

    Other examples of non existant features: array settings, group settings. Basically any app that needs any kind of non basic setting is stuck

    The funny thing is CIQ clearly doesn't sell watches, and even if it did, these CIQ features wouldn't sell watches. So what's the point of teasing devs with half-baked promises? Just to be able to publicly say "we're improving the platform".

  • I'm not sure. I don't know if Garmin has stats about this, but my bet is that a huge portion of users use a CIQ watch face. Or maybe I am naive... I think that at least for watch faces the amount of users of CIQ probably makes it worth to maintain ciq. BTW which other watch brand besides Pebble (RIP) can 100% customize the watch face (by custom watch face)?