Скриншот Circumvent для iOS 4

Я хочу очистить представление до того, как приложение будет отключено, чтобы изменить образ запуска, чтобы при следующем входе в приложение он не отобразил некоторые небезопасные данные.

iOS 4 предоставляет applicationDidEnterBackground и applicationWillResignActive... однако ни один из них, похоже, не может предотвратить скриншот, прежде чем у меня появится возможность очистить представление.

Ответ 1

-applicationDidEnterBackground вызывается перед скриншотом. Оказывается, я просто скрывал свой взгляд ненадлежащим образом.

Простым способом очистки представления было установить скрытое свойство на моем UIView.

Ответ 2

Просто добавьте фрагмент кода для быстрого решения этой проблемы, используя полное фоновое изображение, объявленное при инициализации и скрывающее его.

Вы можете сделать более сложное скрытие конкретного содержимого каждого представления, зарегистрировавшись в уведомлении, а в представлениях скрывать определенные виды (метки), которые вы хотите скрыть.

Еще одно решение - проверить, какой диспетчер представлений отображается, и переключать между различными скриншотами представления этого диспетчера представлений без показанных данных.

Самый простой способ:

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