如何捕获UIScrollView或其他的cancallation?

pnm*_*nmn 5 iphone events ipad interruption ios

有时,会发生电话等中断,并会干扰iPhone或iPad中应用的常规行为.

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

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

问题是,当用户开始拖动并且只是持有UIScrollView实例时,如果我通过按下主页按钮和电源按钮来截取屏幕截图,则不会调用scrollViewDidEndDragging和scrollViewDidEndDecelerating中的任何一个.所以应用程序搞砸了.

我在我的UIViewController中实现了一个UIApplicationWillResignActiveNotification方法,但在截取屏幕后没有调用它.

我如何能够捕获任何扰乱常规事件的中断?

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

谢谢.

Zap*_*pko 2

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

在scrollViewDidScroll中:

[NSObject cancelPreviousPerformRequestsWithTarget:yourController];
[yourController deactivateButtons];
[yourController performSelector:@selector(activateButtons) withObject:nil afterDelay:0.5];
Run Code Online (Sandbox Code Playgroud)

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