是否有可能从被添加到该队列停止接触?
-
16-09-2019 - |
题
我在我的主视图(其包含一些子视图我为按钮使用)禁用相互作用。
我保持这种禁用而我有一个次视图,指示网络活动(装载数据)。当它完成时,我重新启用在主视图的相互作用。
这是为了让用户不敲击这些按钮而网络操作发生。
反正都似乎很好,但如果用户开始轻敲在主视图按钮,一旦重新启用那些发生触摸事件(从过去几秒钟)实际上触发。不是触摸-开始,其中突出的按钮,但呼吁触摸式的功能。其像其排队它被禁用的全部时间和“比赛赶上”。
这是非常奇怪的,为什么会碰触而视图有其用户交互禁用事件进行排队?
解决方案
这是很难有信心的答案在这里没有看到代码,但这里是一个想法:
如果您的网络活动是同步的,又名阻塞,那么它可能是他们有机会打你的任何代码之前,用户的触摸排队的情况。如果是这样的话,那么这些接触将不会被发送到您的响应链,直到网络活动结束,他们从来没有得到一个机会,“知道”你会用这些控件禁用的互动。
这里有一个办法可以帮助调试您的情况:在添加顶层多数民众赞成表明网络活动的一些调试NSLog
语句(你叫什么次要视图)。确保二次视图的框架是足够大,包括触摸,看看它,尽快为他们发生记录的接触。如果没有,我猜可能是正确的。如果是的话,那么,你仍然可以得到有用的信息 - 你也许能够在这个级别简单地拍摄,而不是让他们排队的触动,
如果这个猜测是正确的,至少哈克修复我能想到的就会使你的网络运营异步的。
如果你不想这样做,你也可以尝试使用NSTimer
离开网络活动指示灯弥补了同步调用完成后第二次分裂。这样一来,你的响应链可以清除输入的触摸的队列中,而忽略他们,如果这是所期望的行为。
不隶属于 StackOverflow