0

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

我在-(void)applicationWillEnterForeground:(UIApplication *)application事件的应用程序委托中显示此屏幕。我使用MMDrawerControllergithub(链接:https ://github.com/mutualmobile/MMDrawerController )作为主视图控制器。如果应用程序再次进入后台和前台时呈现的当前视图是这个MMDrawerController,那么becomeFirstResponder它不起作用 - 它不显示键盘。如果抽屉控制器顶部存在另一个视图控制器,则在进入前台时(比如说设置视图),则键盘会正常显示。

我已经尝试NSLogingcanBecomeFirstResponder属性并将其设置为YES. 到底是怎么回事?如何解决这个问题?

如果需要,我可以粘贴代码,但它没有任何歧义。只是简单的调用becomeFirstResponder

编辑:

为了更清楚地解释事情。rootViewController是一个视图控制器LoginViewController,它alloc-init是侧边栏和中心视图控制器,alloc-init是抽屉控制器,并将所有东西连接起来,这样它就可以工作了。应用程序委托视图实际上是一个 PIN 屏幕,当应用程序进入前台时会弹出。现在键盘看起来就像它应该第一次看到抽屉一样。

当用户弹出时SettingsViewController(是的,这是另一个可从侧边栏视图控制器访问的视图控制器),它也可以正常工作。但是当用户关闭设置视图控制器键盘时不再出现。它必须对抽屉做一些事情,因为我在没有它的情况下尝试过它并且它有效(但我只有侧边栏或中心视图控制器可见)。

4

1 回答 1

0

理想情况下,您希望访问 MMDrawerControllers currentView 中的 textField。我已经用这个实现实现了类似的东西:

在您的应用程序委托中存储对 DrawerController 的引用,如下所示:

在 AppDels 界面中:

@property(nonatomic, strong) MMDrawerController *appDrawController;

然后在 didFinishLaunching 中创建本地抽屉控制器之后(如果您按照此库的设置说明进行操作):

self.appDrawController = drawerController;

在您的应用程序WillEnterForeground 中:

THECLASSTHATCONTAINSTHEPINVIEW *yourClass = self.appDrawController.centerViewController.childViewControllers[0];

现在您可以访问公共方法/属性,因此:

[[yourClass pinEntryField] becomeFirstResponder];

这有帮助吗?

于 2013-09-04T16:22:52.357 回答