iOS 控制中心触摸传递到我的滚动视图?
Posted
技术标签:
【中文标题】iOS 控制中心触摸传递到我的滚动视图?【英文标题】:iOS Control Center touches pass through to my Scroll View? 【发布时间】:2014-10-15 12:59:23 【问题描述】:我有一个UIScrollView
,它沿着我的应用程序的底部边缘水平滚动。我注意到一个错误,如果用户向上滑动以打开控制中心,控制中心会附加到他们的手指上,但会调用我的 scrollViewDidBeginDragging
方法。麻烦的是,没有调用后续的结束方法,这意味着我的滚动视图认为有人开始拉它并且从未停止过。
这是一个已知的事情,在打开控制中心(或者我猜也是通知中心)时,触摸会传递到下面的应用程序?它似乎只发生在设备上,而不是在模拟器中(在 sim 中,从不调用 scrollViewDidBeginDragging
委托方法)。
有人遇到过这个吗?这似乎很难防范。
【问题讨论】:
【参考方案1】:我在 ios 8 中遇到了这个错误。当从底部手势滑动以显示控制中心时,滚动视图和其他具有自定义手势的视图都获得了触摸。我在屏幕底部附近有一些 UIButtons,它们也将开始跟踪。这些问题都没有发生在 iOS 7 中使用相同的手势来显示控制中心。
我对 iOS 8 的修复是将以下代码添加到我的应用程序委托的 applicationWillResignActive 和 applicationDidBecomeActive 方法中。
- (void)applicationWillResignActive:(UIApplication *)application
[application beginIgnoringInteractionEvents];
[UIView animateWithDuration:0.25 animations:^
for (UIWindow *aWindow in application.windows)
aWindow.tintAdjustmentMode = UIViewTintAdjustmentModeDimmed;
];
- (void)applicationDidBecomeActive:(UIApplication *)application
[UIView animateWithDuration:0.25 animations:^
for (UIWindow *aWindow in application.windows)
aWindow.tintAdjustmentMode = UIViewTintAdjustmentModeAutomatic;
completion:^(BOOL finished)
[application endIgnoringInteractionEvents];
];
当我的应用退出活动状态时,此代码基本上会关闭所有交互。我还决定将所有窗口的色调模式设置为暗淡,这是我自己的选择,以帮助用户了解我的工具栏项目和其他使用 tintColor 的 UI 未激活。
当我的应用再次激活时,应用会结束忽略交互事件并将窗口的色调模式恢复为自动。
希望对你有所帮助。
【讨论】:
以上是关于iOS 控制中心触摸传递到我的滚动视图?的主要内容,如果未能解决你的问题,请参考以下文章