在ViewWillAppear上隐藏键盘

时间:2013-10-07 12:21:31

标签: iphone ios objective-c

我有一个带导航控制器和文本字段的屏幕。当我移动下一步然后回来我希望键盘应该隐藏在第一个屏幕中。我在文本字段事件中隐藏键盘。

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

但是如何在View相关事件中执行此操作,以便每当我的视图出现时键盘都被隐藏.. 请指导/帮助。 谢谢你。

5 个答案:

答案 0 :(得分:3)

如果您的iOS AppUITextView未通过UITextField连接,我认为这也是在IBOutlet中移除键盘的好方法。

如果您想使用UIViewController LifeCycle事件隐藏键盘,例如viewWillAppear等。请按照

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

否则,如果使用IBOutLet对象进行对象连接,则此代码也可以正常工作。

[yourTextField resignFirstResponder];

答案 1 :(得分:1)

将此代码添加到ViewWillAppear

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

这将占用该特定视图中的所有文本字段,这是整个视图,并添加您之前为删除键盘而编写的代码。

答案 2 :(得分:0)

一个好习惯是在屏幕-viewWillDisappear中编写此代码。因此,当您在此时从一个屏幕导航到另一个屏幕时,它将从该屏幕移除键盘。

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

对于多个textFields,对于任何单个textField,最好对该特定视图使用-endEditing而不是-resignFirstResponder。看看我的Answer

答案 3 :(得分:0)

//This is for Swift
override func viewWillAppear(animated: Bool)
{
   self.view.endEditing(true)
}

答案 4 :(得分:-1)

你做错了的事情是,当你将前一个控制器移回当前控制器时,键盘因为前一个控制器的选定文本字段而启动。

在当前控制器中代码:

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

由于此控制器未选择任何文本字段,因此无效。所以你需要做的是在前一个控制器中编写相同的代码viewWillDisappear方法它肯定会解决你的问题。

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