簡體   English   中英

iOS Control Center觸摸傳遞到我的“滾動視圖”了嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM