【问题标题】:How to catch cancallation of UIScrollView or others?如何捕捉 UIScrollView 或其他的调用?
【发布时间】:2011-01-01 02:33:20
【问题描述】:

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

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

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

问题是当用户 开始拖动并按住 UIScrollView 实例,如果我拿了一个 按主页按钮截屏 和一个电源按钮,然后是任何 scrollViewDidEndDragging 和 scrollViewDidEndDecelerating 没有 被叫。所以应用程序变得一团糟 起来。

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

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

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

谢谢。

【问题讨论】:

  • 如何实现 viewWillAppear 或 viewDidAppear 并测试它们是否在截屏后被调用?然后在这些方法中 if (beingDragged == TRUE) 调用你的 scrollViewDidEndDragging 方法。
  • viewDidScroll 方法即使在中断中也会被调用?可能不是,你有另一种方法来解决你的问题。
  • 我是新手,所以我不确定当用户使用不同的视图时为什么要禁用按钮?我从各种阅读中得到的印象是,您唯一想要禁用按钮的情况是当它无法实际执行其功能时,因为缺少某些数据,即没有选择或未填写字段等.

标签: iphone events ipad ios interruption


【解决方案1】:

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

在scrollViewDidScroll中:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-21
    相关资源
    最近更新 更多