Iphone 成为第一反应者,不要开火

Iphone 成为第一反应者,不要开火,iphone,objective-c,ios,xcode,textfield,Iphone,Objective C,Ios,Xcode,Textfield,我有一个视图控制器,其viewDidLoad方法在其关联视图中包含的文本字段(电子邮件)上调用becomeFirstResponder: -(void) viewDidLoad { [email becomeFirstResponder]; } 此视图控制器通过将其推到导航控制器的堆栈上加载。上面的代码第一次非常有效 但是,稍后在应用程序中,当我想要返回此视图控制器时,键盘不会自动显示(这是在使用popToViewController:animated时)。相反,用户必须手动将焦点设置为

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

-(void) viewDidLoad {
   [email becomeFirstResponder];
}
此视图控制器通过将其推到导航控制器的堆栈上加载。上面的代码第一次非常有效

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


如何解决此问题?

请尝试将其置于视图中。viewDidLoad通常只运行一次,除非您特别告诉它

- (void)viewWillAppear:(BOOL)animated {

            [email becomeFirstResponder];

}

viewDidLoad
仅在第一次调用时调用。当您希望在每次显示视图时都运行某些内容时,请使用
viewwillbeen