当键盘出现在iPad上时,popover缩小到左上角

时间:2012-01-25 20:29:09

标签: ios ipad keyboard popover

我正在开发一个应用程序,其中包含一些包含在popover中的表单。我的问题是,当我点击任何文本输入字段并出现键盘时,弹出窗口缩小到屏幕的左上角(0,0),您无法看到要输入的字段。单击隐藏键盘按钮时,弹出窗口将返回其正常大小和位置。

键盘出现时有没有办法防止弹出窗口大小调整?

以下是我的描述不足的屏幕截图。

http://i.imgur.com/vHyJ5.jpg http://i.imgur.com/vtjCX.jpg

编辑:以下是如何在屏幕上显示弹出窗口的代码:

(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];
}
}

popover内部是一个单独的视图控制器,其布局设置在xib中。 请随意提出任何问题,我是iOS和Objective C的新手,但我不是新编码所以我会尽力澄清。

编辑2: 我发现这只发生在iOS 5中。在旧版本的iOS中,弹出窗口只是垂直折叠,直到有足够的空间放置键盘。关于为什么这种行为在iOS 5中发生了变化的任何想法?

2 个答案:

答案 0 :(得分:3)

实际上很有可能!...这与IB默认选中的自动调整大小有关:

我在另一个有类似问题的论坛上发布了这个。我的解决方案是:

1)进入设计师 2)打开导致问题的XIB ViewController(即PopOver)。 3)单击以选择它的视图。 4)取消选中“AutoResizeSubviews” 5)在代码中加载PopOver时,请确保执行以下操作: 6)Your_Popup_Window.popoverContentSize = Your_ViewController.view.bounds.size;

我希望这会有所帮助。

亲切的问候 Heider Sati

答案 1 :(得分:2)

当键盘出现时,无法阻止弹出窗口改变形状。根据Apple的UIPopoverController文档:

您指定的大小只是弹出窗口视图的首选大小。可以更改实际尺寸以确保弹出窗口适合屏幕并且不会与键盘发生碰撞。

IOS会尝试将其移开,但可能无法实现,具体取决于您所呈现的位置。为了获得最佳效果,请从条形按钮或滚动视图内部(UITableView正常)显示它,并设计您的UI以使弹出窗口不会太大(如果弹出窗口覆盖屏幕的大部分,也许您应该考虑使用模态视图或类似的)。我发现我需要绘制一些图表,这样我才能更好地理解布局,然后才能获得适用于所有情况的解决方案。