检测模态视图何时显示

Posted

技术标签:

【中文标题】检测模态视图何时显示【英文标题】:Detecting when modal view has been displayed 【发布时间】:2009-07-12 14:33:36 【问题描述】:

这很有趣...我有一个应用程序,它有一个帮助屏幕并显示为模式视图。主视图有一个动作,当设备摇晃时发生。我不希望在显示帮助屏幕时发生该操作(播放声音)。

我已经尝试了一些事情......这是我的代码:

显示帮助屏幕:

- (IBAction)helpButtonPressed:(id) sender 
    helpViewController = [[HelpViewController alloc] init]; 
    [self presentModalViewController:helpViewController animated:YES];

释放帮助屏幕:

- (IBAction)buttonPressed:(id) sender 
    [self dismissModalViewControllerAnimated:YES];

我尝试了以下但没有成功:

if ([helpViewController.view isHidden ]) 
    NSLog(@"Shake -- helpView is loaded");
 else 
    NSLog(@"Shake -- helpView is not loaded");



if ([helpViewController isViewLoaded]) 
    NSLog(@"Shake -- helpView is loaded");
 else 
    NSLog(@"Shake -- helpView is not loaded");


if ([self isViewLoaded]) 
    NSLog(@"Shake -- helpView is loaded");
 else 
    NSLog(@"Shake -- helpView is not loaded");

我的想法是如果有一个功能可以让我检测是否显示帮助视图,我会在设备摇晃时返回而不播放声音....

有什么想法吗?

【问题讨论】:

【参考方案1】:

我假设加载模态控制器的视图控制器也是响应摇动动作的视图控制器。如果是这种情况,那么您可以使用父视图控制器的modalViewController 属性来查看模态控制器是否处于活动状态:

if(self.modalViewController != nil) 
    // Modal view controller is active; do nothing
    NSLog(@"Shake -- helpView is loaded");
    return;
 else 
    // No modal view controller; take action
    NSLog(@"Shake -- helpView is not loaded");
    [self performSomeAction];

【讨论】:

以上是关于检测模态视图何时显示的主要内容,如果未能解决你的问题,请参考以下文章

从 didFinishLaunchingWithOptions 呈现模态视图

在 ipad 中模态显示视图并在 iphone 中推送

SwiftUI 检测视图何时不可见(有点视图会消失)并停止发布者

检测主视图控制器和详细视图控制器何时都在屏幕上?

如何检测自定义表格视图单元格何时离开屏幕?

检测用户何时中断 UIScrollView 动画