Ios 成为第一响应者应用程序代理不工作

Ios 成为第一响应者应用程序代理不工作,ios,objective-c,uiview,uitextfield,appdelegate,Ios,Objective C,Uiview,Uitextfield,Appdelegate,我的情况如下:我有一个应用程序实现了PIN屏幕。它不是什么高科技的东西,只是基本的4UITextFields,并通过UITextFieldDelegate实现逻辑——它可以工作 我在-(void)application willenterforeground:(UIApplication*)application事件上的app delegate中显示此屏幕。我正在使用github(链接:)的MMDrawerController作为主视图控制器。如果应用程序再次进入后台和前台时显示的当前视图是此M

我的情况如下:我有一个应用程序实现了PIN屏幕。它不是什么高科技的东西,只是基本的4
UITextField
s,并通过
UITextFieldDelegate
实现逻辑——它可以工作

我在
-(void)application willenterforeground:(UIApplication*)application
事件上的app delegate中显示此屏幕。我正在使用github(链接:)的
MMDrawerController
作为主视图控制器。如果应用程序再次进入后台和前台时显示的当前视图是此
MMDrawerController
,则
becomeFirstResponder
不工作-它不显示键盘。如果在进入前台时,抽屉控制器顶部出现另一个视图控制器(比如设置视图),则键盘正常显示

我已经尝试了
NSLog
ing
canBecomeFirstResponder
属性并将其设置为
YES
。发生了什么事?如何解决这个问题

我可以粘贴代码,如果需要的话,但它没有什么含糊不清的。只需简单的呼叫
成为第一响应者

编辑:

把事情解释清楚一点
rootViewController
是一个视图控制器,它被缩放为
LoginViewController
,它
alloc init
s侧边栏和中心视图控制器,
alloc init
s抽屉控制器,并连接所有内容,使其正常工作。应用程序代理视图实际上是一个PIN屏幕,当应用程序进入前台时弹出。现在,第一次看到抽屉时,键盘看起来就像它应该的样子


当用户弹出
SettingsViewController
(是的,这是另一个可以从侧栏视图控制器访问的视图控制器)时,它也可以工作。但当用户解除设置时,视图控制器键盘不再显示。它必须与抽屉有关,因为我尝试不使用它,它工作正常(但我只有侧边栏或中心视图控制器可见)

理想情况下,您希望访问MMDrawerControllers currentView中的文本字段。我在这一实施中取得了类似的成就:

在应用程序代理中,存储对抽屉控制器的引用,如下所示:

在AppDels界面中:

@property(nonatomic, strong) MMDrawerController *appDrawController;
然后在didFinishLaunching中创建本地抽屉控制器后(如果遵循此库的设置说明):

在您的应用程序中:

THECLASSTHATCONTAINSTHEPINVIEW *yourClass = self.appDrawController.centerViewController.childViewControllers[0];
现在您可以访问公共方法/属性,因此:

[[yourClass pinEntryField] becomeFirstResponder];

这有帮助吗?

嗯,它比这复杂一点
rootViewController
实际上是一个名为
LoginViewController
的视图控制器,它提供了
DrawerViewController
,所以我想这不是一个真正的解决方案。另外,必须有更好的方法。
[[yourClass pinEntryField] becomeFirstResponder];