我正在研究一个应用程序中包含的一个形式的应用程序。我的问题是,当我点击任何文本输入字段和键盘出现时,popover会缩小到屏幕的左上角(0,0),您无法看到您进入的字段。单击“隐藏键盘”按钮时,POLPOVER返回其正常大小和位置。

是否有任何方法可以防止键盘出现键盘时调整的popover?

这里是我的描述不充分的屏幕镜头。

编辑:以下是屏幕上如何呈现Popover的代码:

(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和客观的方式相当陌生,但我不是编码的新手,所以我会尽力澄清。

编辑2: 我发现这只发生在iOS 5中。在旧版本的iOS中,Popover仅垂直折叠,直到键盘有足够的空间。关于IOS 5在IOS 5改变的原因的任何想法?

有帮助吗?

解决方案

在出现键盘时,无法防止弹出窗口更改形状。根据Apple的 UIPOpoverController 文档:

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

iOS将尝试将其移出,但可能是不可能的,具体取决于您从呈现它的位置。为获得最佳结果,从BAR按钮或从滚动视图中呈现它(UITableView还可以),并设计您的UI,以便开发程序不太大(如果POPOVER涵盖大部分屏幕,也许您应该考虑一个SEGUE模态视图或类似)。我发现我需要绘制一些图表,以便在我获得在所有情况下工作的解决方案之前,我可以更好地了解布局。

其他提示

实际上它是非常可能的!......这与IB中默认情况下勾选的自动调整大小有关:

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

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

我希望这有帮助。

亲切的问候 海贼王sati

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top