我有一个视图控制器,其viewDidLoad方法在其关联视图中包含的文本字段(电子邮件)上调用becomeFirstResponder:
-(void) viewDidLoad { [email becomeFirstResponder]; }
通过将视图控制器推入导航控制器的堆栈来加载该视图控制器.上面的代码第一次很有用.
但是,稍后在应用程序中,当我想返回到此视图控制器时,键盘不会自动出现(这是使用popToViewController:动画时).相反,用户必须手动将焦点设置为文本字段以便键盘显示…我的猜测是在popToViewController:animated加载了相关的视图控制器之后没有调用viewDidLoad?
我该如何解决这个问题?
解决方法
尝试将其放在viewWillAppear中. viewDidLoad通常只运行一次,除非你特别说明.
- (void)viewWillAppear:(BOOL)animated { [email becomeFirstResponder]; }