我正在开发的应用程序的一部分涉及在用户变为非活动状态时在当前内容上放置一个空白屏幕。因此,在 x 秒后会打开一个空白页面视图控制器:
(从 ViewController.m 中检测到来自 ScreenBlank.m 的 NSNotification 触发)
UIPageViewController *blankPage = [self.storyboard instantiateViewControllerWithIdentifier:@"BlankPageViewController"];
[self presentViewController:blankPage animated:YES completion:nil];
当用户触摸屏幕(并因此确认他们的活动)时,此空白屏幕将被删除,如下所示:
(来自 ViewController.m 的 touchesBegan 回调内部)
[self dismissViewControllerAnimated:YES completion:nil];
我遇到的问题是,我现在想在其他地方触发删除此屏幕空白,例如当用户注销时。这是通过从插入的读卡器中移除一张卡来完成的,这意味着它是从一个单独的类中调用的(并且是从 ActionMgr.m 中实例化的类)。
有问题的类(CardWatcher)是这样创建的:
CardWatcher *newInstance = [[CardWatcher alloc] init];
[newInstance StartCardChecker];
CardWatcher 实例会在卡片被移除时发出通知,如下所示:
[[NSNotificationCenter defaultCenter] postNotificationName:@"logout" object:nil];
然后在 ViewController 中侦听此通知,并在被触发时执行与之前用于空白屏幕的代码完全相同的代码:
[self dismissViewControllerAnimated:YES completion:nil];
通过使用日志记录,我确定通知接收良好,并且正在执行dismissViewControllerAnimated 代码,但由于某种原因,所述代码实际上并没有关闭视图控制器。
我能想到的唯一原因是它(从长远来看)在一个类的实例中被称为表单,但即便如此它也是通过 NSNotification 传递的,所以在我看来它的来源应该是无关紧要的?
任何帮助将非常感激!