干净优雅的做iOS应用内全局交互屏蔽

3cb0ab7f649ba0754a7ffe73468da271.jpeg

a4669a1298db22403b1480c278fd1ad3.gif

本文字数:4930

预计阅读时间:28分钟

0e6fe0559f1442c1fc4253edf52cd5e2.png

01

交互屏蔽的需求

很多应用开发者都会遇到这样一个需求,当程序需要处理某个敏感的核心任务,或者执行某些动画时,需要杜绝一切外部干扰,优先保证任务的完成,之后再去处理其它任务。否则如果在处理过程中受到外部事件的干扰,可能会引入严重的问题,而规避这些问题需要额外编写过多的逻辑。

例如,当程序在忙着清理应用内缓存的过程中去处理其它任务,这时候由于其它任务可能会产生新的缓存,这就会和现有的任务冲突。所以在清理缓存的过程中,app 一般会暂时中断用户和非用户的请求,优先保证缓存清理的完成。

所以,为了简化产品设计逻辑,开发者一般会选择在处理任务时暂时屏蔽其它任务,优先保障现有任务的完成。

举例来说,当用户点击清理缓存时,应用程序可能会弹出一个带有进度条的清理界面,在该界面下,清理工作紧张的进行着,并且告知用户正在清理任务,请稍候。

另一个需求是和动画有关,有时候我们在应用内可能会执行一些小动画,例如按钮的淡入淡出,整个页面的切换等。这些动画可能不会因为用户做快速的操作导致程序崩溃,但是因为每个动画都要时间完成,如果用户快速乱点的话,有可能会出现意想不到的情况。

例如,假设用户点击某个开关切换按钮,开关状态为开时,屏幕侧边以动画形式弹出侧边栏,当开关状态为关时,屏幕侧边栏以动画形式消失。那么如果用户快速反复点击按钮,而开发者没有处理好开关切换间隙的逻辑的话,那么就会出现侧边栏弹出动画还没执行完,就立刻消失的情况。

值得注意的是,这一类事件包括但不限于用户触摸事件,还有屏幕重力感应的变化等非用户输入事件,这就意味着这一类问题如果要优雅解决的话,不能单靠添加一个"触摸屏蔽层"。

02

常见的解决办法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值