2010-07-28 18 views
11

Desidero cancellare una vista prima che un'applicazione venga disattivata, per modificare l'immagine di avvio in modo che al successivo inserimento dell'app non vengano visualizzati dati non sicuri.Schermata di Circumvent per iOS 4

iOS 4 fornisce applicationDidEnterBackground e applicationWillResignActive ... tuttavia, nessuno di questi sembra essere in grado di impedire l'acquisizione dello screenshot prima che abbia la possibilità di cancellare la vista.

+2

Sei sicuro? '-applicationDidEnterBackground:' viene chiamato prima di prendere lo screenshot. – kennytm

+0

Hai ragione. Errore mio. – akaru

risposta

8

-applicationDidEnterBackground viene chiamato prima dello screenshot. Si scopre che stavo semplicemente nascondendo il mio punto di vista in modo errato.

Un modo semplice per cancellare la vista era impostare la proprietà nascosta sul mio UIView.

+1

Quando si tenta di catturare lo screenshot premendo contemporaneamente il pulsante home e il pulsante di accensione (che è in alto a destra del dispositivo), non è possibile ottenere metodi delegati all'app nell'applicazione iOS (Lavorare con iOS 6). Per favore aiuto. – kushalrshah

1

Solo per aggiungere uno snippet di codice per una soluzione rapida a questo problema utilizzando un'immagine di sfondo completa dichiarata sull'inizializzazione e nascondendola.

È possibile eseguire una mascheratura più sofisticata del contenuto specifico di ogni vista registrandosi alla notifica e nelle viste nascondere le viste particolari (etichette) che si desidera nascondere.

Un'altra soluzione è controllare quale viewcontroller viene visualizzato e passare tra schermate diverse della vista di questo viewcontroller senza i dati visualizzati.

Il modo più semplice:

- (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; 
} 
Problemi correlati