ios - 从 ModalViewController 返回后键盘没有出现

标签 ios iphone objective-c uiviewcontroller modalviewcontroller

我有一个 UIViewController,然后使用这段代码我提供了一个用于输入密码的模态视图 Controller 。

[self performSegueWithIdentifier:@"SeguePassword" sender:self];

在 Storyboard中:

Storyboard转折 标识符 = Segue 密码 样式 = 模态 过渡 = 默认 动画 = 未选中

当我在具有以下代码的模式上单击“取消”时:

[self dismissViewControllerAnimated:NO completion:^{}];

现在当我回来时,键盘是隐藏的。我有代码来显示一个工具栏,该工具栏带有一个名为隐藏的按钮。我看到了,但没有看到键盘。

有没有人有任何想法或指示来解决这样的问题?它似乎是最近在转换 iOS 7 的更改后开始的。

我的解决方案:

我发现这个是因为在我出于挫败感点击警告框上的 but 几次后,我看到键盘方向错误。即,当应用程序仅在 iPhone 上为纵向时,横向键盘。

之前:

- (NSUInteger) supportedInterfaceOrientations {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
} else {
    **return (UIInterfaceOrientationPortrait);**
}

之后:

- (NSUInteger) supportedInterfaceOrientations {
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    return UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight;
} else {
    **return (UIInterfaceOrientationMaskPortrait);**
}

我将 Portrait 更改为使用 Mask 整数,然后一切又开始工作了。

最佳答案

键盘仅在某些对象是 firstResponder 时可见。查看 UIResponder 类的文档。

如果您的模态视图 Controller 使用键盘(听起来确实如此),它会获得第一响应者状态,并且原始屏幕上的任何内容都会丢失。如果你想从模态视图 Controller 返回到相同的状态,一些对象具有输入焦点——即成为 firstResponder——并且键盘可见,你将必须编写代码来实现这一点。特别是,您的原始 View Controller 必须知道模态视图 Controller 何时终止,以便它可以使您的输入对象、textField 或 textView 或其他任何对象成为第一响应者并声明:

   [objectIWantToBeFirstResponder becomeFirstResponder];

现在你怎么知道模态视图 Controller 什么时候完成了? 有几个明显的技巧。

如果你想使用 segue 那么模态视图 Controller 将不得不 明确地让呈现 View Controller 知道它是 终止。您可能希望在 模态视图 Controller 并让呈现 View Controller 采用 它。当模态视图 Controller 想要退出时,它首先告诉呈现 View Controller 。

因为你可能手动触发了转场 您愿意在代码中呈现模态视图 Controller 。如果是这样的话 您可以使用完成 block :

   ModalViewControllerClass *vc = [[ModalViewControllerClass alloc] init];
   // whatever else you need to do to the vc
    [self presentViewController:vc animated:YESorNO completion:^{
        // This code gets executed when the presented view controller exits
        [objectIWantToBeFirstResponder becomeFirstResponder];
    }];

关于ios - 从 ModalViewController 返回后键盘没有出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21682185/

相关文章:

ios - 创建 tableView 的自定义 CellView 后,我仍然没有获得多列 View 。谁能帮我吗?

iphone - 如何拉伸(stretch)单元格背景图像而不像 iPhone 中的聊天气泡那样的特定部分?

iphone - 我的 Xcode 符号去哪儿了?

iphone - CGRectIntegral 的用法是什么?

ios - subview 不显示按钮或 imageView

ios - MWPhotoBrowser 不从 web URL 加载图像

ios - UIWebView 仅在必要时清除缓存

ios - 后台线程中的核心数据锁

ios - Soundcloud mp3 无法通过 Chrome iphone 应用流式传输

ios - 如果您知道它被调用了 n 次,请等待异步任务完成