5

有时,电话等中断会发生并扰乱 iPhone 或 iPad 中应用程序的正常行为。

例如,我创建了一个 UIScrollView 实例并实现了 UIScrollView 委托方法:scrollViewWillBeginDragging 和 scrollViewDidEndDragging(和 scrollViewDidEndDecelerating)。

scrollViewWillBeginDragging 方法停用了我的应用程序中的所有自定义按钮。然后 scrollViewDidEndDragging 和 scrollViewDidEndDecelerating 方法激活了这些自定义按钮。也就是说,当用户滚动时,所有自定义按钮都会停用一段时间。

问题是,当用户开始拖动并只持有一个 UIScrollView 实例时,如果我通过按主页按钮和电源按钮截取屏幕截图,那么 scrollViewDidEndDragging 和 scrollViewDidEndDecelerating 中的任何一个都不会被调用。所以应用程序变得一团糟。

我在我的 UIViewController 中实现了一个 UIApplicationWillResignActiveNotification 方法,但是在截屏后它没有被调用。

我怎样才能捕捉到任何干扰正常事件流的中断?

有时,由于中断,touchesEnd 和 touchesCanceled 也没有被调用。

谢谢你。

4

1 回答 1

2

performSelector:withObject:afterDelay我遇到了同样的问题,并通过使用NSObject 的方法摆脱了它。

在 scrollViewDidScroll 中:

[NSObject cancelPreviousPerformRequestsWithTarget:yourController];
[yourController deactivateButtons];
[yourController performSelector:@selector(activateButtons) withObject:nil afterDelay:0.5];

您可以尝试这种技术并将其与您提到的其他技术结合起来。
希望,这会有所帮助。祝你好运!

于 2011-01-17T11:11:14.833 回答