具有长可滚动区域的界面(例如长文本,消息历史)会让人感到麻烦和不可靠,部分原因是应用开发人员没把记录阅读位置当作应用的重要组成部分。
如果用户收藏一条消息,或者打开了按条件搜索,这通常是一个持续型行为;取消操作之后数据可能会丢失。相比之下,界面中的常见操作都会丢失滚动位置。
这里的一个关键点是,虽然滚动行为通常通过一个共同的系统级组件来实现,但滚动位置的语义解析在应用程序状态却是由界面决定的。例如,同一个视窗可能用于显示多个不同的话题聊天记录。在某些情况下,保留并恢复最近浏览的聊天记录的滚动位置更合理;在其他情况下,为每个聊天记录独立保留滚动位置更合理。因此,保留这种状态不能通常在其本应所在的层上进行。
相关笔记:
问:为什么应用程序不能可靠地保留界面视图的滚动位置?
答:开发人员并不认为滚动位置是界面状态的重要组成部分。
问:记录滚动位置的应用程序状态有哪些难点?
答:(例如,通常 UI 框架想要成为“模型”,视窗标识的语义解释有微妙的变化,等等)
参考文献
推特用户 Omar Rizwan:「我对滚动条害怕又反感(例如,向上滚动很长时间以查看聊天记录),因为我知道应用程序开发人员并不认真对待它们。比如我会在中途点击另一个聊天,之后又回到我曾向上滚动的聊天,然后发现原来的滚动位置已经丢失了。」
链接至本文(已汉化)
声明
此内容发布由 Andy Matuschak 许可。未经允许,不得转载或修改。保留所有权利。
Thoughts Memo 汉化组译制
感谢主要译者 panda、校对 JarrettYe
原文:Applications don’t reliably maintain scroll positions (andymatuschak.org)