[英]iOS Control Center touches pass through to my Scroll View?
我有一個UIScrollView
,它可以沿應用程序的底部邊緣水平滾動。 我注意到一個錯誤,如果用戶向上滑動以打開Control Center,Control Center會附着在他們的手指上,但是會調用我的scrollViewDidBeginDragging
方法。 麻煩的是,沒有調用任何后續的end方法,這意味着我的滾動視圖認為有人開始拉它,而從未停止過。
這是已知的事情嗎,在打開控制中心(或者我也想通知中心)時,觸摸會傳遞給下面的應用程序嗎? 它似乎只發生在設備上,而不是在模擬器中發生(在sim中,從不調用scrollViewDidBeginDragging
委托方法)。
有人碰到這個嗎? 似乎很難防范。
我在iOS 8上遇到了此錯誤。在執行從底部手勢進行滑動以顯示Control Center時,滾動視圖和其他帶有自定義手勢的視圖都被傳遞了觸摸。 我在屏幕底部附近有一些UIButton,它們也將開始跟蹤。 這些問題都沒有發生在使用相同手勢顯示Control Center的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處於未激活狀態。
當我的應用程序再次激活時,該應用程序將忽略交互事件,並將窗口的色彩模式恢復為自動。
希望這對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.