2

我在 iPad 上的横向视图控制器有两个问题。

(1) 我有两个包含表格的弹出窗口。表格应滚动到特定行以反映主视图中的选择。相反,表格确实向下滚动了一些,但实际选择的行仍然不在屏幕上。

(2) 我所有的动作表的宽度都是 320。

在 Interface Builder 中,我的所有视图都是横向创建的。只有主窗口不是,但我看不到改变它的方法。

我的配置:启动后,我的主窗口和主视图控制器视图得到以下坐标:

Window frame {{0, 0}, {768, 1024}} mainView frame {{0, 0}, {748, 1024}}

之后的所有其他视图在被召唤时显示这些坐标(加载时但在呈现之前):

    frame of keysig {{0, 0}, {1024, 768}}
    frame of instrumentSelect {{20, 0}, {1024, 768}}
    frame of settings {{0, 0}, {467, 300}}

在我所有的 viewControllers 中,我都会回复shouldAutorotateToInterfaceOrientation

            return ((interfaceOrientation == UIInterfaceOrientationLandscapeLeft) || 
                        (interfaceOrientation == UIInterfaceOrientationLandscapeRight));

一切(几乎)都按预期运行。该应用程序启动到两种横向模式之一。视图(和视图控制器)显示它所属的所有内容,并且点击按预期在整个屏幕上工作。但是,我仍然有这两个问题。

问题 1:我有两个弹出窗口,其中包含足够长的表格,可以在屏幕外运行。表格应滚动到选定的行。它们确实滚动,即它们不会从第 1 行开始,但它们滚动不足以实际显示选定的行。

替代文字 http://idisk.mac.com/mahboud//Public/keysig.png

替代文字 http://idisk.mac.com/mahboud//Public/instrumentlist.png

似乎 UITable 内部矩形是用错误的数字创建的,并且保持这种状态,但我已经检查了 UITableView 的 scrollView 内容坐标,它们似乎是合理的。

问题 2:我认为这与问题 1 有关,因为我的操作表的宽度为 320。我只能假设 iPad 只允许 320 或 480 宽度的操作表,因为它以某种方式认为屏幕以纵向模式定向,它使用较窄的宽度。

你有它。我不敢相信我仍然对方向问题感到困惑。我发誓苹果不会让一个横向应用程序变得容易。有任何想法吗?

4

1 回答 1

0

我有点想通了。如果我采取

[self.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionNone animated:YES];

从 -viewDidAppear 或 -viewWillAppear 中取出,而是将它放在我的 -presentPopoverFrom... 之后,然后它可以工作:

[popController presentPopoverFromBarButtonItem:keySigBBItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

[keySignatureTableVC.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:NO];

必须发生的事情是 -viewDidAppear 和 -viewWillAppear 都必须在 presentPopover 之前被调用...调整大小或重新定向视图。我在这两种方法中所做的不是在正确的框架或边界上工作。之后滚动似乎有效。

于 2010-05-03T10:18:20.207 回答