2

i have a screen having navigation controller and text field. when i move next and come back i want the keyboard should be hidden in first screen. I am hiding keyboard like on textfield event.

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

But how to do that in View related events so that whenever my view appears keyboard is hidden.. Pls guide/Help. thanks in adv.

4

5 回答 5

4

我认为这也是删除键盘的好方法,iOS App如果您UITextView或未UITextField通过IBOutlet.

如果您想使用UIViewController诸如 withviewWillAppear等生命周期事件隐藏键盘。请遵循此

-(void)viewWillAppear:(BOOL)animated    {
    [super viewWillAppear:animated];
    [[self view] endEditing:YES];
}

否则,如果您使用IBOutLet此代码连接的对象也可以正常工作,就像您描述的那样。

[yourTextField resignFirstResponder];
于 2013-10-07T12:26:06.590 回答
1

Add this code to your ViewWillAppear :

for(id obj in self.view.subviews)
    {
        if([obj isKindOfClass:[UITextField class]])
        {
             [obj resignFirstResponder];
        }
    }

This would take in all the textfields in that particular view here it is the whole view and add the code you had written previously for removing the keyboard.

于 2013-10-07T12:23:32.973 回答
1

一个好习惯是在屏幕的-viewWillDisappear. 因此,当您当时从一个屏幕导航到另一个屏幕时,它将从该屏幕上移除键盘。

- (void)viewWillDisappear:(BOOL)animated
{
    [self.view endEditing:YES];
    [super viewWillDisappear:animated];
}

对于多个文本字段,最好使用-endEditing该特定视图而不是-resignFirstResponder任何单个文本字段。看看我的答案

于 2013-10-07T12:55:32.040 回答
0
//This is for Swift
override func viewWillAppear(animated: Bool)
{
   self.view.endEditing(true)
}
于 2015-09-12T06:53:26.240 回答
-1

您做错的事情是,当您将前一个控制器移回当前控制器时,由于前一个控制器的选定文本字段,键盘已启动。

在当前控制器中,代码:

-(void)viewWillAppear:(BOOL)animated    {
    [super viewWillAppear:animated];
    [[self view] endEditing:YES];
}

它将不起作用,因为在此控制器上未选择任何文本字段。所以你需要做的是在之前的控制器 viewWillDisappear 方法中编写相同的代码,它肯定会解决你的问题。

- (void)viewWillDisappear:(BOOL)animated
{
    [self.view endEditing:YES];
    [super viewWillDisappear:animated];
}
于 2013-10-07T13:13:22.540 回答