Ios7 防止在presentViewController上隐藏键盘(显示弹出窗口)

Ios7 防止在presentViewController上隐藏键盘(显示弹出窗口),ios7,keyboard,uitextview,Ios7,Keyboard,Uitextview,有一个带有UITextView的视图。UITextView是唯一可能的键盘第一响应程序。让我们称之为“后视图” 还有另一个视图是弹出的(带有透明背景的全屏视图,使基础视图淡出)。让我们称之为“弹出窗口” 弹出窗口可以正常工作,除非键盘在屏幕上。显示弹出窗口将强制隐藏键盘,当弹出窗口关闭时,键盘将再次显示。因为弹出窗口没有覆盖整个后视图,所以看起来不太好 当弹出窗口显示时,有没有办法让键盘保持在后视图上?(不需要在弹出窗口中使用键盘) 弹出窗口包含: 背景设置为黑色且带有alpha的全屏视图(使

有一个带有UITextView的视图。UITextView是唯一可能的键盘第一响应程序。让我们称之为“后视图”

还有另一个视图是弹出的(带有透明背景的全屏视图,使基础视图淡出)。让我们称之为“弹出窗口”

弹出窗口可以正常工作,除非键盘在屏幕上。显示弹出窗口将强制隐藏键盘,当弹出窗口关闭时,键盘将再次显示。因为弹出窗口没有覆盖整个后视图,所以看起来不太好

当弹出窗口显示时,有没有办法让键盘保持在后视图上?(不需要在弹出窗口中使用键盘)

弹出窗口包含:

  • 背景设置为黑色且带有alpha的全屏视图(使基线视图褪色)
  • 多个图像、标签和关闭按钮
弹出窗口显示为:

[self setModalPresentationStyle:UIModalPresentationCurrentContext];
[self presentViewController:vc animated:YES completion:nil];
找到解决方案:

将弹出视图添加为当前窗口的子视图显示:

if let popupVC = storyboard.instantiateViewControllerWithIdentifier("PopupVC") as? PopupVC
    {
        var frame = UIScreen.mainScreen().bounds
        frame.origin.y = frame.size.height
        overlayWindow = UIWindow(frame: frame)

        popupVC.overlayWindow = overlayWindow
        overlayWindow.windowLevel = UIWindowLevelAlert
        overlayWindow.rootViewController = popupVC

        overlayWindow.makeKeyAndVisible()

        UIView.animateWithDuration(0.3, animations:
        {
            self.overlayWindow.frame.origin.y = 0
        })
    }
藏在泡沫塑料里

 if let window = overlayWindow
    {
        UIView.animateWithDuration(0.3, animations: {
            window.frame.origin.y = window.frame.height
        }, completion: { (finished) -> Void in
            self.overlayWindow = nil
        })
    }

服务器回答了他自己的问题(我也有这个问题)。但我只是想为了其他人的利益明确地解释代码:

//instantiate popUpVC, then
popUpVC.view.frame = [UIScreen mainScreen].bounds; //assuming you wish the popover to occupy the entire screen; adjust as needed
UIWindow* currentWindow = [[[UIApplication sharedApplication] windows] lastObject];
[currentWindow addSubview:popUpVC.view];

如果我理解正确,您需要将“vc”添加为子视图控制器,然后将其视图添加为当前控制器(显示键盘的控制器)的子视图。不要要求系统演示它,只需自己动手(因为您并没有更改上下文……至少您没有通过提供有关弹出窗口的详细信息来表示)。给它贴上标签,这样你可以在淡出后删除它。谢谢你的建议。尝试将弹出窗口作为子视图。在这种情况下,键盘显示在我的弹出窗口上方:(并且没有fadingigraczech,再次显示thx。如果将子视图添加到窗口(不是当前控制器),则所有工作都正常)。你也可以在popover中显示它。那应该也包括键盘。igraczech,popover实际上就是我要做的。但据我所知,它只适用于iPad?