2012-02-07 63 views
1

我在我的MainViewController.m文件中有一个带Textfields的应用程序。该文件中还有一个滚动视图,所以当键盘出现时,视图会滚动以便用户看到文本字段。当用户点击屏幕时,键盘被解除。一切都运行良好,除非用户点击主页按钮将应用程序置于后台然后再回到它。在这种情况下,键盘仍然弹起,但我的滚动视图已关闭,文本框隐藏起来。理想情况下,我想让键盘也被解雇。从AppDelegate.m中的applicationDidEnterBackground中删除键盘

查看完毕后,调用的方法都在AppDelegate.m文件中(不幸的是,它不会进入ViewDidLoad或任何View生命周期方法)。如何从AppDelegate.m文件中的applicationDidEnterBackground中关闭键盘? 我是一个新手 - 我试图在我的MainViewController文件中做一个+ dismisskeyboard函数,并从Appdelegate调用它,但是我的文本字段都是实例变量,并且不起作用。我也尝试在我的AppDelegate文件中创建一个文本框,然后执行此操作 -

[_someField becomeFirstResponder];

[_someField resignFirstResponder];

但是这也没有工作...我无法弄清楚如何在我的故事板链接什么someField的AppDelegate的财产。

任何人都可以提出正确的方法来解决这个问题吗?

回答

3

只需在您的MainViewController类中注册一个UIApplicationDidEnterBackgroundNotification的方法,然后关闭键盘。例如
注册通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(receivedNotification:) name:UIApplicationDidEnterBackgroundNotification object:nil]; 


再加入此方法

- (void) receivedNotification:(NSNotification *) notification 
{ 
    [txtFld resignFirstResponder]; 
} 
+0

谢谢!多简单的解决方案!我仍在学习通知,但管理这一个,它完美的作品。 – 2012-02-07 15:06:57

+0

这是一件好事...... :) – 2012-02-07 15:11:25