从AppDelegate.m中的applicationDidEnterBackground中删除键盘

时间:2012-02-07 14:53:47

标签: objective-c keyboard uitextfield uistoryboard

我的MainViewController.m文件中有一个包含Textfields的应用程序。该文件中还有一个滚动视图,因此当键盘出现时,视图会滚动,以便用户可以看到文本字段。当用户点击屏幕时,键盘被解除。除了用户点击主页按钮将应用程序放在后台然后返回到它之外,一切都运行良好。在这种情况下,键盘仍然处于运行状态,但我的滚动视图已关闭,文本字段已隐藏。理想情况下,我也想让键盘被解雇。

调查过后,调用的方法都在AppDelegate.m文件中(遗憾的是它不会进入ViewDidLoad或任何View生命周期方法)。如何从AppDelegate.m文件中的applicationDidEnterBackground中解除键盘? 我是一个新手 - 我已经尝试在我的MainViewController文件中创建+ dismisskeyboard函数并从Appdelegate调用它,但我的Textfields都是实例变量,但不起作用。我还尝试在AppDelegate文件中创建一个文本域,然后执行此操作 -

  

[_ someField becomeFirstResponder];

     

[_ someField resignFirstResponder];

但这也行不通......我无法弄清楚如何将故事板上的任何内容链接到someField的 AppDelegate 属性。

有人能建议正确的方法来解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

只需在UIApplicationDidEnterBackgroundNotification课程中为MainViewController注册一种方法,然后在那里解除键盘。例如
注册通知

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


然后添加此方法

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