2014-03-03 5 views
0

은행 응용 프로그램을 개발 중이며 클라이언트 요구 사항이 앱이 백그라운드에서 실행될 때 화면 스냅 샷을 표시하거나 저장하지 않아야합니다. 버튼을 클릭). 배경 방법으로 오버레이보기를 추가하고 앱이 다시 포어 그라운드에 올 때 해당보기를 제거했습니다. 홈 버튼을 클릭하면 완벽하게 작동하며 1 초 또는 2 초 정도 기다렸다가 다시 홈 버튼을 두 번 클릭합니다.applicationDidEnterBackground 메서드가 호출되지 않습니다. 응용 프로그램이 백그라운드에서 실행될 때 applicationWillResignActive도 수행되지 않았습니다.

내 문제는입니다. 홈 버튼을 한 번 클릭하고 응용 프로그램 아이콘이 표시되기 직전까지 몇 밀리 초를 기다렸다가 다시 홈 버튼을 두 번 클릭하면 멀티 태스킹보기에서 화면 스냅 샷이 표시됩니다.

이 문제를 분석했을 때이 시나리오에서는 백그라운드 위임 메서드가 호출되지 않아이 경우 오버레이 뷰가 추가되지 않는다는 것을 알게되었습니다.

단계 재현하기 :

  1. 응용 프로그램의 appDidEnterBackground 방법에 (말할 수 있습니다 색상 동안 함께) 오버레이보기를 추가합니다.
  2. willEnterForeground 메소드에서 오버레이보기를 제거하기위한 코드를 추가하십시오.
  3. 이제 응용 프로그램을 실행하십시오.
  4. 홈 버튼을 한 번 누릅니다.
  5. 홈 버튼을 한 번 누른 후 (응용 프로그램 아이콘이 표시되기 직전) 홈 버튼을 두 번 클릭하여 멀티 태스커보기를 볼 수 있습니다.
  6. 오버레이보기 대신 응용 프로그램 스크린 샷이 표시됩니다.

예상 결과 : 오버레이 뷰가 추가되어 있어야하지만, 당신은 대신 응용 프로그램 스냅 샷의 것을 볼 수 있어야합니다.

실제 결과 : 당신은 멀티 TASKER보기에서 응용 프로그램의 스크린 샷을 볼 수 있습니다

버전 : 아이폰 OS 7

+1

에 제거하기', 오버레이 이동'에 - (무효) applicationWillResignActive :' – staticVoidMan

+0

@staticVoidMan 나는 그 일을 또한 시도했다. .. 그러나 도움이 아니었다. 두 메서드는 호출되지 않았다 : ( – anshul

+0

흠 ... 그것은 screenshot 일이 분할 초 이전에 일어나야합니다 것 같습니다 – 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]; 
    // ... 
} 

에 실드 이미지보기를 던져 대신`-applicationDidEnterBackground의 applicationDidBecomeActive:

- (void)applicationDidBecomeActive:(UIApplication *)application { 
    // ... 
    [self.shieldImageView removeFromSuperview]; 
    self.shieldImageView = nil; 
    // ... 
} 
관련 문제