2010-07-28 14 views
11

Chciałbym wyczyścić widok, zanim aplikacja zostanie wyłączona, aby zmienić obraz uruchamiania, aby przy następnym uruchomieniu aplikacji nie wyświetlał się jakiś niezabezpieczonych danych.Zrzut ekranu Circumvent dla iOS 4

iOS 4 zapewnia applicationDidEnterBackground i applicationWillResignActive ... jednak żadne z nich nie jest w stanie zapobiec wykonaniu zrzutu ekranu, zanim będę miał możliwość wyczyszczenia widoku.

+2

Czy jesteś pewien? '-applicationDidEnterBackground:' jest wywoływane przed zrobieniem zrzutu ekranu. – kennytm

+0

Masz rację. Mój błąd. – akaru

Odpowiedz

8

-applicationDidEnterBackground zostanie wywołany przed zrzutem ekranu. Okazuje się, że po prostu ukrywałem swój pogląd niewłaściwie.

Prostym sposobem na wyczyszczenie widoku było ustawienie ukrytej właściwości na moim UIView.

+1

Podczas próby przechwytywania zrzutu ekranu za pomocą naciśnięcia przycisku home i przycisku zasilania (który znajduje się w górnej prawej części urządzenia), Nie można uzyskać żadnych metod delegowania aplikacji w aplikacji iOS (Praca z iOS 6). Proszę pomóż. – kushalrshah

1

Wystarczy dodać fragment kodu, aby szybko rozwiązać ten problem, używając pełnego obrazu tła zadeklarowanego podczas inicjowania i ukrywania go.

Możesz bardziej skrystalizowaną ukryć zawartość poszczególnych widoków, rejestrując się w powiadomieniu, a w widokach ukryć poszczególne widoki (etykiety), które chcesz ukryć.

Innym rozwiązaniem jest sprawdzenie, który kontroler viewcontroller się wyświetla i przełączanie między różnymi zrzutami ekranu widoku tego kontrolera view bez wyświetlania danych.

Najłatwiej:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
    UIImageView *backgroundView_ = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 
    self.backgroundView = backgroundView_; 
    [backgroundView_ release]; 

    // Add other controllers views 
    // ... 

    [self.window bringSubviewToFront:self.backgroundView]; 
    self.backgroundView.hidden = YES; 
    [self.window makeKeyAndVisible]; 
} 

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    self.backgroundView.hidden = YES; 
    } 

- (void)applicationDidEnterBackground:(UIApplication *)application { 
    self.backgroundView.hidden = NO; 
}