| ▲ | longfacehorrace 4 hours ago | |||||||||||||||||||||||||||||||||||||
It's not just the keyboard. My iPhone 15 is often so unresponsive I am tapping twice as much. Example but the issue not limited to web browsing; Safari will do nothing, I tap again, it does the thing, then it does the thing again due to the second tap. I have to tap back to get to where I really wanted to go. | ||||||||||||||||||||||||||||||||||||||
| ▲ | itopaloglu83 4 hours ago | parent | next [-] | |||||||||||||||||||||||||||||||||||||
Sounds like the liquid glass animations are so heavy that if the system is busy with anything else for a second then everything simply breaks. I remember seeing the videos about cpu usage spiking over 40% just to show the control center. And similarly, even on a Mac I find myself clicking on links and button multiple times, just for things to work. It has a dedicated keyboard, how is it that they messed it up so much that a physical keyboard stops working. It's an interrupt based interface, it takes less than a millisecond to process things, how can someone mess things up so freaking stupidly. | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||
| ▲ | tadfisher 4 hours ago | parent | prev [-] | |||||||||||||||||||||||||||||||||||||
Extremely common pitfall in UI engineering. If you treat all input as a queue that's divorced from output, you end up with situations like this. It's kind of a paradox, but in many cases you need to actually discard touch inputs until your UI state has transitioned as a result of previous inputs. This gets extremely nuanced and it's hard to write straightforward rules about when you should and shouldn't do this. Some situations I can think of: - Navigation: User taps a button that pushes a screen on your nav stack. You need to discard or prevent inputs while the transition animation is happening, otherwise you can push multiple copies of that screen. - Async tasks: User taps a button that kicks off an HTTP request or similar, and you need to wait on the result before doing something else like navigation or entering some other state. Absolutely you will need to prevent inputs that would submit that request twice. You will also need some idempotency in your API design to handle failure/retries. A fun example from the 1990s is the "are you sure you want to make this POST request again" dialog that Web browsers still show by default. - Typing: You should never discard keystrokes that insert/delete characters while a text input field is focused, but you may have to handle a state like the above if "Enter" (or whatever "done" button is displayed in the case of a software keyboard) does something like submit a form or do navigation. Essentially we're all still riding on stuff that the original Mac OS codified in the 1980s (and some of it was stolen from Xerox, yes), so the actual interaction model of UIs is a mess of modal state that we hardly ever actually want to fully realize in code. UI is a hard problem! | ||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||