2014-03-03 42 views
0

我正在開發一個銀行應用程序,並且客戶端的要求是不顯示/保存屏幕快照,當應用程序進入後臺時(即,當回家時按鈕被點擊)。 我在後臺方法中添加了疊加視圖,並在應用再次進入前臺時刪除了該視圖。當我點擊主頁按鈕時,它的工作狀態非常好,等待1或2秒,然後再次點擊主頁按鈕。applicationDidEnterBackground方法沒有調用applicationWillResignActive當我的應用程序在後臺進入iOS 7

我的問題是:如果我點擊主頁按鈕一次,等待幾毫秒(僅僅是應用程序圖標前可見),然後再次單擊home鍵兩次,然後屏幕快照是可見的(在多任務視圖)。

當我分析了這個問題後,我開始知道我的後臺委託方法在這種情況下不會被調用,因此在這種情況下不會添加覆蓋視圖。

重現步驟:

  1. 添加覆蓋圖(有顏色的同時,讓我們說),在應用程序的appDidEnterBackground方法。
  2. 添加代碼以移除willEnterForeground方法中的疊加視圖。
  3. 現在,運行您的應用程序。
  4. 按主頁按鈕一次。
  5. 只需按一次主頁按鈕(並在應用程序圖標可見之前),單擊主頁按鈕兩次,以便您可以看到Multitasker視圖。
  6. 而不是覆蓋視圖,你會看到那裏的應用程序截圖。

預期結果: 的同時疊加視圖應該已被添加,你應該已經看到,而不是應用程序快照。

實際結果: 你能看到多塔斯克針對應用程序的屏幕截圖

版本: 的iOS 7及以上

+1

,而不是'-applicationDidEnterBackground:',移動覆蓋到' - (無效)applicationWillResignActive:' – staticVoidMan

+0

@staticVoidMan我也試過這樣做......但它沒有任何幫助。這兩種方法都沒有被調用:( – anshul

+0

hm ...似乎屏幕截圖的事情必須在一秒之前發生 – staticVoidMan

回答

0

我創建了一個應用程序,不正是你要。我扔了屏蔽圖像視圖中applicationWillResignActive:

- (void)applicationWillResignActive:(UIApplication *)application { 
    // ... 
    self.shieldImageView = [[UIImageView alloc] initWithFrame:self.window.frame]; 
    self.shieldImageView.image = [UIImage imageNamed:@"shieldimage"]; 
    self.shieldImageView.contentMode = UIViewContentModeScaleAspectFit; 
    [self.window addSubview:self.shieldImageView]; 
    // ... 
} 

,並擺脫它在applicationDidBecomeActive:

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    // ... 
    [self.shieldImageView removeFromSuperview]; 
    self.shieldImageView = nil; 
    // ... 
} 
相關問題