2012-09-26 62 views
2

我在應用程序中向用戶顯示了一些敏感數據,當用戶單擊主頁按鈕並回到應用程序時,Apple具有快照功能,在按下主頁按鈕之前,在設備上顯示最後一個屏幕的圖片。防止系統採用應用程序的「恢復時使用」快照

有什麼辦法可以完全禁用這個效果嗎?我已經在這裏看到了在背景激活時顯示圖像的方法,該背景激活將推到視圖頂部,並在用戶返回到應用程序時首先顯示快照位置,但我希望此功能完全消失,而不必當用戶再次進入應用程序時保存任何快照或任何其他屏幕截圖。任何人都可以建議一種方法來做到這一點

請注意,我不是在談論使用主頁按鈕+睡眠按鈕按下屏幕截圖。

回答

1

在您的應用程序委託的applicationWillResignActive:方法中,您可以使UIImageView顯示某些不顯眼的彈出窗口。例如,假設您的應用程序擁有用戶的密碼。有人走在用戶身後,用戶按下主頁按鈕。這就調用applicationWillResignActive:方法,該方法可能是地圖視圖,所以當walker不見了並且用戶重新打開應用程序時,它會直接打開到地圖視圖,而不是簡單地顯示用戶密碼。這是你會如何實現它:

//AppDelegate.m 
- (void)applicationWillResignActive:(UIApplication *)application { 

    UIImageView *image = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"picOfMap.png"]]; 
    image.frame = self.view.frame; 
    image.contentMode = UIViewContentModeCenter; 
    [self.window.rootViewController.view addSubview: image]; 
} 

而這裏的時候applicationWillResignActive:被稱爲的描述:

這個方法被調用,讓你的應用程序知道它即將從活動轉移到無效狀態。對於某些類型的臨時中斷(例如來電或SMS消息)或用戶退出應用程序並開始轉換到後臺狀態時,可能會發生這種情況。處於非活動狀態的應用程序將繼續運行,但不會將傳入的事件分派給響應方。 (UIApplicationDelegate Reference

代碼中可能存在一些錯誤,因爲我不熟悉在App Delegate中工作,但這是您應該做的事情的要點。

+0

但是當用戶回到應用程序時,我不希望該視圖再次出現。我希望用戶點擊主頁按鈕,當他們回來時,根本不顯示快照,無論是在主頁按鈕按下(快照)之前用戶正在查看的視圖,還是甚至可能強制到屏幕上的任何內容就在主頁出版之前(上面的解決方案)。我不想讓圖像/視圖在那裏,不管它是否不顯眼 –

+0

@JohnBaum-當應用程序在被用戶關閉後重新打開時,快照將是「不顯眼」的圖像,而不是將顯示的敏感數據。你可以把代碼放在'applicationWillEnterForeground:'中去除圖像,這樣用戶就會回到原來的屏幕。基本上,我所有的代碼都會取代敏感數據的舊快照,並帶有平淡無奇的圖像;它不會影響任何其他事情。 – pasawaya

+0

@JohnBaum你想表現什麼?從這個評論看來,你想要一個空白的屏幕。 – nycynik

相關問題