UITextField - 当应用程序来自后台时键盘不隐藏

Posted

技术标签:

【中文标题】UITextField - 当应用程序来自后台时键盘不隐藏【英文标题】:UITextField - Keyboard not hiding when app comes from background 【发布时间】:2014-10-16 08:22:09 【问题描述】:

在我的 ios 应用程序中,我在视图底部有 UITextfield。因此,当用户开始输入文本时,我将视图向上滑动,以便用户可以看到他们正在输入的内容。 输入文字时,视图向上移动,然后按主页按钮,应用程序将进入后台。 现在点击应用程序的图标,它将应用程序带到前台 现在我注意到视图回到了原始位置(X=0,Y=0),但键盘仍然可见。 应用进入前台时如何隐藏键盘。

我试图在 viewWillAppear 和 viewWillDisappear 中隐藏键盘。没用。

【问题讨论】:

为了清楚起见......当你在最后一句中说“隐藏键盘”时,你的意思是你在文本字段中调用了“resignFirstResponder”,对吗? 检查我更新的答案。 【参考方案1】:
 -(void)applicationDidEnterBackground:(UIApplication *)application
  
       [self.window endEditing:YES];
  

********** 或 ************

当您来自后台时,您必须调用通知。当你从后台进入到前台然后调用appdelegate的这个方法。

- (void)applicationWillEnterForeground:(UIApplication *)application

如下所示触发其中的通知。

- (void)applicationWillEnterForeground:(UIApplication *)application

    [[NSNotificationCenter defaultCenter] postNotificationName:@"HIDE" object:self];

在您的视图控制器中添加通知,如下所示

-(IBAction)HideKeyBard:(NSNotification *)noty

    [txt resignFirstResponder];


- (void)viewDidLoad 
    [super viewDidLoad];

    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(HideKeyBard:) name:@"HIDE" object:nil];

输出:

【讨论】:

它运行良好,除了小问题。我的文本字段位于底部,因此我将视图向上移动。我的视图有一个背景图像。现在,当应用程序进入前台时,它会在底部显示空白(之前显示键盘的位置)【参考方案2】:

最好的办法是把 window?.endEditing(true) 放在 AppDelegate 上的 applicationWillResignActive 中:

func applicationWillResignActive(_ application: UIApplication) 
window?.endEditing(true)

希望对你有帮助

【讨论】:

【参考方案3】: 在您的 App Delegate 中有一个对 UIView * 的弱引用。 将其设置为您显示的任何文本字段(从任何视图控制器)。

当应用程序进入前台时,只需调用视图的 resignFirstResponder 即可关闭键盘。此解决方案不关心应用程序进入后台时显示了哪个视图控制器。它只需要知道是否显示了文本视图,如果是,只需将其作为第一响应者即可。如果没有显示任何内容,则此变量将为 nil,并且只是一个空操作。

现在,即使将相同的视图控制器放在前面,用户也只需点击文本视图即可将键盘放回,这是完全可以接受的。

【讨论】:

以上是关于UITextField - 当应用程序来自后台时键盘不隐藏的主要内容,如果未能解决你的问题,请参考以下文章

删除时键“PRIMARY”的重复条目“0”(codeigniter)

每次应用程序来自android的后台时启动第一个屏幕

如何在没有按钮的情况下在 UITextField 中显示来自 UIDataPicker 的值

UITextField, becomeFirstResponder, resignFirstResponder

尝试将 UITextField 格式化为像货币计算器一样仅用于 iOS 中的数字输入

来自 rightView 的 UITextField 参考