2016-12-01 13 views
6

Próbuję zmienić zrzut ekranu, który jest automatycznie przechwytywany przez iOS, gdy aplikacja wchodzi w tło.Kiedy jest wykonywane automatyczne przechwytywanie ekranu ios?

Jednak nie jestem całkowicie pewien, kiedy dokładnie zostanie wykonany zrzut ekranu.

Na przykład:

Jeśli ciągnąć w dół pasek powiadomień, gdy w aplikacji następująca metoda nazywa się:

- (void) applicationWillResignActive:(UIApplication *) application { 
} 

Także jeśli dwukrotnie przycisk do domu, podczas gdy w aplikacji tą samą metodą jest nazywany. Ponadto, jeśli wyświetlany jest widok alertu, wywoływana jest funkcja "applicationWillResignActive".

Ale w obu tych przypadkach

- (void) applicationDidEnterBackground:(UIApplication *) application { 
} 

nie nazywa.

Moje pytanie brzmi, czy istnieje zrzut ekranu przechwycony po wywołaniu applicationWillResignActive, nawet jeśli aplikacja nie wchodzi w tło? Czy też iOS przechwytuje zrzut ekranu po aplikacjiDidEnterBackground?

Odpowiedz

3

można spojrzeć na here, w skrócie, zmienić widok przed powrocie z applicationDidEnterBackground:

+0

Albo nawet przejść bezpośrednio do głównego źródła: https://developer.apple. com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExution/BackgroundExecution.html – Tommy

1

Tak.

- (void) applicationWillResignActive:(UIApplication *) application { }

nazywa się podczas ciągnięcia w dół pasek powiadomień lub nawet po dwukrotnym kliknięciu przycisku domu. Musisz zrobić coś tutaj, aby zapobiec przechwytywaniu poufnych informacji przez system operacyjny. Jeden obejście może być:

  1. Set rozmyte nakładka na ekran przed aplikacja przechodzi w tle
  2. Gdy aplikacja staje się aktywna usunąć ten Overlay

coś takiego:

-(void)applicationWillResignActive:(UIApplication *)application 
{ 
    imageView = [[UIImageView alloc]initWithFrame:[self.window frame]]; 
    [imageView setImage:[UIImage imageNamed:@"blurryImage.png"]]; 
    [self.window addSubview:imageView]; 
} 

Następnie usuń tę nakładkę zanim aplikacja wejdzie na pierwszy plan:

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(imageView != nil) { 
     [imageView removeFromSuperview]; 
     imageView = nil; 
    } 
} 
+0

To nie odpowiada na moje pytanie. Zdaję sobie sprawę, że applicationWillResignActive jest wywoływana w takich sytuacjach. Jednak kiedy aplikacja wykonuje zrzut ekranu? applicationWillResignActive lub applicationDidEnterBackground? – lostintranslation

+0

OK, rozumiem. Zobacz dokumentację dostarczoną przez ** Apple ** w tych metodach w 'AppDelegate.m', znajdziesz swoją odpowiedź. Przy okazji, mówiąc dokładniej, 'applicationWillResignActive' powinno być odpowiedzią na twoje pytanie. – nayem

0

jest wywoływana po rozwinięciu paska powiadomień lub nawet po dwukrotnym kliknięciu przycisku strony głównej. Musisz zrobić coś tutaj, aby zapobiec przechwytywaniu poufnych informacji przez system operacyjny. Jeden obejście może być:

Set rozmyte nakładka na ekran przed aplikacja przechodzi w tle Gdy aplikacja staje się aktywna usunąć ten Overlay

Powiązane problemy