我有HomeViewController
与其他几个UIViewControllers
有不同的模态分段。如果我尝试在HomeView中的UITextField
上显示键盘,一切正常。但是,如果我尝试在从任何模态视图控制器返回后在UITextField
(使用becomeFirstResponder
)上显示键盘,则键盘永远不会显示。
以下是我尝过的其中一个设置的示例代码:
在HomeViewController
:
- (void)viewDidAppear:(BOOL)animated
{
static BOOL firstTimeComplete = false;
if (!firstTimeComplete) {
firstTimeComplete = true;
} else {
UITextField *textField = [[UITextField alloc] init];
[self.view addSubview:textField];
[textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:3]
}
}
在ModalViewController
:
- (IBAction)done:(id)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
done:
与" Done"相关联的位置通过内部事件触摸按钮。
我尝试过的一些事情:
dismissViewControllerAnimated:
)任何人都知道可能会发生什么?
答案 0 :(得分:1)
[super viewDidAppear:animated]
就像那样,我的工作方式非常好
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^
{
if (self.textView.text.isNotEmpty)
{
[self.textView becomeFirstResponder];
}
});
}
答案 1 :(得分:1)
删除大量代码后,我终于发现正在使用自定义NavigationController,这是根本原因:
@implementation MSLNavigationController
- (NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationPortrait;
}
- (BOOL)shouldAutorotate
{
return NO;
}
@end
该应用程序不需要此代码,因此我已经对该文件进行了修改。 (但是解释为什么这会隐藏键盘会很棒:))
答案 2 :(得分:0)
我一直在努力解决这个问题,所以我会在这里发布我发现的内容。
我在textField.becomeFirstResponder()
中呼叫viewWillAppear
,但在iOS 7上,在模式被解除后,即使您点击textField,键盘也不会再次显示。
当我提出模态时调用textField.resignFirstResponder()
,解决了问题。看起来输入字段已被标记为第一响应者,然后不会对新呼叫作出反应。