becomeFirstResponder没有开火

时间:2011-08-23 22:18:13

标签: iphone objective-c ios xcode textfield

我有一个视图控制器,其viewDidLoad方法在其关联视图中包含的文本字段(电子邮件)上调用becomeFirstResponder:

-(void) viewDidLoad {
   [email becomeFirstResponder];
}

通过将视图控制器推入导航控制器的堆栈来加载该视图控制器。上面的代码第一次很有用。

但是,稍后在应用程序中,当我想返回到此视图控制器时,键盘不会自动出现(这是使用popToViewController:动画时)。相反,用户必须手动将焦点设置为文本字段才能显示键盘...我的猜测是在popToViewController:animated加载了相关的视图控制器之后没有调用viewDidLoad?

如何解决此问题?

2 个答案:

答案 0 :(得分:4)

viewDidLoad仅在第一次调用时才会被调用。如果希望每次出现视图时都要运行,请使用viewWillAppear

答案 1 :(得分:3)

尝试将其放入viewWillAppear中。 viewDidLoad通常只运行一次,除非你特别说明。

- (void)viewWillAppear:(BOOL)animated {

            [email becomeFirstResponder];

}