我在我的主视图(其包含一些子视图我为按钮使用)禁用相互作用。

我保持这种禁用而我有一个次视图,指示网络活动(装载数据)。当它完成时,我重新启用在主视图的相互作用。

这是为了让用户不敲击这些按钮而网络操作发生。

反正都似乎很好,但如果用户开始轻敲在主视图按钮,一旦重新启用那些发生触摸事件(从过去几秒钟)实际上触发。不是触摸-开始,其中突出的按钮,但呼吁触摸式的功能。其像其排队它被禁用的全部时间和“比赛赶上”。

这是非常奇怪的,为什么会碰触而视图有其用户交互禁用事件进行排队?

有帮助吗?

解决方案

这是很难有信心的答案在这里没有看到代码,但这里是一个想法:

如果您的网络活动是同步的,又名阻塞,那么它可能是他们有机会打你的任何代码之前,用户的触摸排队的情况。如果是这样的话,那么这些接触将不会被发送到您的响应链,直到网络活动结束,他们从来没有得到一个机会,“知道”你会用这些控件禁用的互动。

这里有一个办法可以帮助调试您的情况:在添加顶层多数民众赞成表明网络活动的一些调试NSLog语句(你叫什么次要视图)。确保二次视图的框架是足够大,包括触摸,看看它,尽快为他们发生记录的接触。如果没有,我猜可能是正确的。如果是的话,那么,你仍然可以得到有用的信息 - 你也许能够在这个级别简单地拍摄,而不是让他们排队的触动,

如果这个猜测是正确的,至少哈克修复我能想到的就会使你的网络运营异步的。

如果你不想这样做,你也可以尝试使用NSTimer离开网络活动指示灯弥补了同步调用完成后第二次分裂。这样一来,你的响应链可以清除输入的触摸的队列中,而忽略他们,如果这是所期望的行为。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top