If you’re a button, you have one job

If you’re a button, you have one job

如果你是一个按钮,你的职责就只有一个

One thing I was (and still am) worried about when it comes to my recent big interactive essay is that by showing all these classic desktop examples, the whole thing might appear old-fashioned, relevant only to a bygone era. Yet, the challenges it shows are universal. 关于我最近那篇大型交互式文章,我曾经(现在依然)担心的一点是,由于展示了所有这些经典的桌面端示例,整篇文章可能会显得过时,仿佛只与过去的时代有关。然而,它所揭示的挑战却是普遍存在的。

Here’s something I just spotted. This is how you rotate an image on an iPhone and on a Nothing Phone: It’s a pretty standard control – tap once to rotate counterclockwise, tap a second time to do it again, etc. – with a helpful transition of the photo’s orientation so that you don’t lose yours. 这是我刚刚发现的一个例子。以下是在 iPhone 和 Nothing Phone 上旋转图片的方式:这是一个非常标准的控件——点击一次逆时针旋转,再次点击继续旋转,以此类推——并配有照片方向转换的过渡动画,这样你就不会迷失方向。

Now, I’m going to exaggerate the problem a bit and tap 90-degree rotation quickly eight times. Eight times should result in what engineers call a “no op” – the image rotating twice in full, and ending up where it started. That indeed happens on the iPhone: But it’s a different story on the Nothing Phone/​Android: 现在,我将稍微夸大一下这个问题,快速点击 90 度旋转按钮八次。点击八次的结果应该是工程师所说的“空操作”(no op)——即图片完整旋转两圈,最终回到原点。在 iPhone 上确实如此,但在 Nothing Phone/Android 上情况则完全不同:

iPhone will remember and buffer the taps, so that the second, pending rotation will happen as soon as the first is done. The Nothing Phone button gives you a tap confirmation via both haptics and sound, and then ignores the tap if a previous rotation is still animating. iPhone 会记住并缓存这些点击操作,因此当第一次旋转完成后,第二次挂起的旋转会立即执行。而 Nothing Phone 的按钮虽然会通过触觉反馈和声音确认你的点击,但如果上一次旋转动画尚未结束,它就会直接忽略后续的点击。

Why does it matter? I often keep thinking about the framework of situational disability, stating that disability is not just something that happens to a few people and no one else. No, pretty much everyone will occasionally encounter a situation that will make them effectively disabled, and this is why accessibility matters much more than many of us assume: I think similarly about casual and non-casual use. 这为什么重要?我经常思考“情境性残障”(situational disability)这一框架,它指出残障并非只会发生在少数人身上。事实上,几乎每个人偶尔都会遇到让自己处于“功能性残障”的情境,这就是为什么无障碍设计比我们想象的要重要得多:对于休闲使用和非休闲使用,我的看法也是如此。

Photo-taking on phones is typically casual. Phone cameras are typically very good at detecting the photo orientation – but get confused when you’re pointing down. Now, as an example, if you had to take photos of a bunch of landscape documents, you might end up having to rotate dozens of photos, one by one. And it would be so much more predictable and pleasant if you could just tap the button three times at any pace you wanted without thinking, without paying attention, without getting your UI blocked by an animation that no longer helps you. 手机拍照通常是休闲行为。手机摄像头通常非常擅长检测照片方向,但在你向下拍摄时往往会出错。举个例子,如果你需要拍摄一堆横向文档,你可能最终不得不逐一旋转几十张照片。如果你能以自己想要的任何节奏点击按钮三次,而无需思考、无需关注、也不会被不再有意义的动画阻塞 UI,那么整个过程将会变得更加可预测且令人愉悦。

This is, I suppose, “situational power user-ness.” Given a long enough timeframe – or, in this case, a large enough population – even a casual interface like phone photo editing (or, GarageBand) will meet someone who will have no choice but to treat it more seriously and expect more from it. 我想,这就是所谓的“情境性高阶用户需求”。在足够长的时间跨度下——或者像本例中这样,在足够庞大的用户群体中——即使是像手机照片编辑(或 GarageBand)这样休闲的界面,也会遇到不得不严肃对待它并对其抱有更高期望的用户。

By the way, buffering the taps is not the only answer. You can also just stop/​accelerate the animation after an interrupting tap. But the rule is: never force the user to wait for the animation to finish. 顺便说一句,缓存点击并不是唯一的解决方案。你也可以在用户中断点击后直接停止或加速动画。但准则是:永远不要强迫用户等待动画播放完毕。