当iPad键盘弹出时,弹出窗口会缩小到左上角。

4
我正在开发一个应用程序,其中一些表单包含在弹出窗口中。我的问题是,当我点击任何文本输入字段并出现键盘时,弹出窗口会缩小到屏幕的左上角(0,0),你无法看到正在输入的字段。当你点击隐藏键盘按钮时,弹出窗口会恢复到正常大小和位置。
有没有办法防止键盘出现时弹出窗口的大小改变?
以下是屏幕截图,以防我的描述不足。
编辑:以下是如何在屏幕上呈现弹出窗口的代码:
(void)displayPopoverForOrientation:(UIInterfaceOrientation)orientation {
if ([Utilities getAppDelegate].menuPopover) {
    CGRect rect = CGRectMake(0, 0, 0, 0);
    if (orientation == UIInterfaceOrientationLandscapeLeft ||
        orientation == UIInterfaceOrientationLandscapeRight) {
        if (self.currentPopover == RESERVATIONS_POPOVER) {
            rect = CGRectMake(365, 0, 0, 0);
        } else if (self.currentPopover == ACCOUNT_POPOVER) {
            rect = CGRectMake(600, 0, 0, 0);
        } else if (self.currentPopover == RESORTS_POPOVER) {
            rect = CGRectMake(0, 0, 0, 0);
        }
    }

    [[Utilities getAppDelegate].menuPopover presentPopoverFromRect:rect
                                                            inView:self.view 
                                          permittedArrowDirections:UIPopoverArrowDirectionUp 
                                                          animated:YES];
}
}

在弹出窗口中,有一个单独的视图控制器,其布局设置在xib中。如果有任何问题,请随时问我,我对iOS和Objective C还比较新,但我并不是编码新手,所以我会尽力澄清。
编辑2: 我发现这只发生在iOS 5中。在旧版本的iOS中,弹出窗口仅垂直折叠,直到有足够的空间容纳键盘。关于为什么iOS 5的行为发生了变化,有什么想法吗?

1
代码会很有帮助。你是如何在屏幕上展示弹出窗口的? - Mark Adams
我认为应该对矩形进行一些转换。因为您的视图在横向方向上进行了转换。无法从内存中获取所需的代码。 - Roman Temchenko
你需要在呈现弹出窗口之前使用类似这样的方法:- (CGRect)convertRect:(CGRect*)rect fromWindow:(UIWindow)window - Roman Temchenko
2个回答

2
实际上这是非常有可能的! ... 这与IB中默认选中的自动调整大小有关:
我在另一个类似问题的论坛上发布了此帖,对我而言解决方案是:
1)进入设计器 2)打开引起问题的XIB ViewController(即PopOver)。 3)单击选择其VIEW。 4)取消“AutoResizeSubviews”的选中状态。 5)在代码中加载PopOver时,请确保您执行以下操作: 6)Your_Popup_Window.popoverContentSize = Your_ViewController.view.bounds.size;
希望这能有所帮助。
顺祝商祺, Heider Sati

2
当键盘出现时,无法防止弹出窗口改变形状。根据苹果的UIPopoverController文档:
您指定的大小只是弹出窗口视图的首选大小。实际大小可能会被修改,以确保弹出窗口适合屏幕并且不与键盘碰撞。
IOS会尝试将其移开,但这可能取决于您从哪里呈现它。为了获得最佳效果,请从一个工具栏按钮或滚动视图内部(UITableView可以)呈现它,并设计您的UI使弹出窗口不要太大(如果弹出窗口覆盖了大部分屏幕,也许您应该考虑使用segue转到模态视图或类似)。我发现我需要画一些图表来更好地理解布局,然后才能找到适用于所有情况的解决方案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接