代码之家  ›  专栏  ›  技术社区  ›  mahboudz

ipad:popover视图中的表不滚动以显示所选行

  •  2
  • mahboudz  · 技术社区  · 15 年前

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

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

    (2)我所有的行动表都有320宽。

    在界面生成器中,我的所有视图都是以横向方式创建的。只有主窗口没有,但我看不到改变的方法。

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

    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));
    

    一切(几乎)按预期运转。应用程序将进入两种横向模式之一。视图(和viewcontrollers)显示它所属的所有内容,轻触可按预期在整个屏幕上工作。但是,我仍然有两个问题。

    问题1: 我有两个弹出窗口,里面的桌子足够长,可以从屏幕上消失。表格应滚动到选定的行。它们确实是滚动的,也就是说,它们不是从第1行开始的,但是它们滚动的程度不足以实际显示所选行。

    alt text http://idisk.mac.com/mahboud//Public/keysig.png

    alt text http://idisk.mac.com/mahboud//Public/instrumentlist.png

    看起来一个uitableview的内部rect是用错误的数字创建的,并且保持这种状态,但是我检查了uitableview的scrollview内容坐标,它们看起来是合理的。

    问题2: 我认为这与问题1有关,因为我的行动表的宽度是320。我只能假设ipad只允许320或480个宽度的actionsheets,而且由于它认为屏幕是以纵向模式定向的,所以它使用了更窄的宽度。

    给你。我真不敢相信我还在纠结于定向问题。我发誓苹果不容易有一个景观应用程序。有什么想法吗?

    1 回复  |  直到 15 年前
        1
  •  0
  •   mahboudz    15 年前

    我想起来了。如果我接受

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

    在-viewDidAppear或-viewWillAppear中,将其放在My-PresentPooverFrom…,然后它就可以工作了:

    [popController presentPopoverFromBarButtonItem:keySigBBItem permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    
    [keySignatureTableVC.tableView scrollToNearestSelectedRowAtScrollPosition:UITableViewScrollPositionMiddle animated:NO];
    

    必须发生的是-viewDidAppear和-viewWillAppear必须在PresentPopover之前被调用…调整视图的大小或方向。我在这两个方法中所做的并不是在正确的帧或边界上工作。滚动后似乎工作。