4

当用户通过将应用程序切换到前台来激活应用程序时,我需要在屏幕上隐藏某些内容。

我尝试在 applicationDidBecomeActive 或 applicationWillEnterForeground 中插入我的代码,虽然它运行正常,但带有我想要隐藏的文本的旧屏幕会暂时显示。

如何在重绘屏幕之前隐藏该字段?

谢谢

伊帕奥

4

3 回答 3

2

编写一些代码applicationWillResignActive:来“隐藏”您需要隐藏的任何内容。

于 2011-05-05T07:25:06.273 回答
2

我认为问题在于,iOS 会在您的应用程序进入后台的那一刻捕获屏幕截图,因此动画将立即生效。

我认为这样做的唯一方法是在应用程序进入后台时隐藏/覆盖您的视图。

于 2011-05-05T07:12:43.373 回答
0

我遇到了类似的情况,但我不想隐藏,而是想显示一个块代码屏幕来授予访问权限。无论如何,我认为该解决方案也适用于您的需求。

我经常在我的 iOS 应用程序中实现自定义基本视图控制器。因此,我没有处理applicationDidBecomeActive:applicationWillResignActive:设置这个视图控制器来监听等效的通知:

@interface BaseViewController : UIViewController

- (void)prepareForGrantingAccessWithNotification:(NSNotification *)notification;

- (void)grantAccessWithNotification:(NSNotification *)notification;

@end


@implementation BaseViewController

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];

  [self addNotificationHandler:@selector(grantAccessWithNotification:)
               forNotification:UIApplicationDidBecomeActiveNotification];

  [self addNotificationHandler:@selector(prepareForGrantingAccessWithNotification:)
               forNotification:UIApplicationWillResignActiveNotification];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)prepareForGrantingAccessWithNotification:(NSNotification *)notification {
  // Hide your views here
  myCustomView.alpha = 0;

  // Or in my case, hide everything on the screen
  self.view.alpha = 0;
  self.navigationController.navigationBar.alpha = 0;
}

- (void)grantAccessWithNotification:(NSNotification *)notification {
  // This is only necessary in my case
  [self presentBlockCodeScreen];
  self.view.alpha = 1;
  self.navigationController.navigationBar.alpha = 1;
  ...
}

@end
于 2013-09-17T12:19:10.583 回答