当应用程序进入后台时关闭弹出窗口
为此,您可以使用appdelegate.m文件中的委托方法
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//put your dissmiss popover code here
}
发送您的应用程序委托的willResignActive
方法的NSNotification
,并包含弹出视图控制器,听它,并将它在收到通知时解除所述弹出窗口。
最好是注册您的控制器为UIApplicationDidEnterBackgroundNotification
或UIApplicationWillResignActiveNotification
,并在您的应用程序转到后台时关闭它,这会让您的生活更加轻松。
在viewDidLoad
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(myMethod)
name:UIApplicationDidEnterBackgroundNotification object:nil];
实现方法注册的通知,并
-(void)myMethod{
// dismiss popview here
}
终于在您的视图控制器从通知取消注册
-(void)dealloc{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}
不想使用通知,是否有任何方法从窗口获取UIPopoverController实例,因为我们可以获取警报,操作表。 – Ashwani 2013-03-05 12:58:49
我觉得最好是使用通知,而不是直接在appDelegate中调用viewcontroller的代码 – nsgulliver 2013-03-05 13:01:18
我在窗口的子视图上递归迭代以取消警报和工作表,寻找类似的方法 – Ashwani 2013-03-05 13:06:50
试试这个
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//[popover dissmissPopoverAnimated:YES];
}
对于这种方法工作,你需要在appDelegate中保留popoverController的引用,这可能不是一个好的选择。 @David Haynes和nsgulliver的答案会更好。 – Anupdas 2013-03-05 12:58:38
@Anupdas你是对的。 – Dilip 2013-03-05 12:59:29
不错的答案+1。 – 2013-03-05 13:06:55