为什么UISearchBar及其范围按钮显示在一行中?

nac*_*o4d 7 uisearchbar uisearchdisplaycontroller ipad

我已经看到Apple的示例"TableSearch"触摸其范围按钮时会出现在搜索栏下方. http://developer.apple.com/iphone/library/samplecode/TableSearch/Introduction/Intro.html

但是当我自己制作时它看起来很不错但是当我触摸它看起来像丑陋时,范围按钮和搜索栏显示在同一行如下:http: //cl.ly/BN9

我该怎么办才能让它像iPad中的"TableSearch"一样?

我正在做IB中的所有事情,并尝试从控制器以编程方式修改搜索栏:

    - (void)viewDidLoad {

        [super viewDidLoad];
        self.tableView.rowHeight = 88.0f;
        self.tableView.contentOffset = CGPointMake(0, self.searchDisplayController.searchBar.frame.size.height);
self.searchDisplayController.searchResultsTableView.rowHeight = self.tableView.rowHeight;


    //BELOW DID NOT WORK:
    CGRect b = self.searchDisplayController.searchBar.bounds;
    self.searchDisplayController.searchBar.bounds = CGRectMake(b.origin.x, b.origin.y, b.size.width, self.tableView.rowHeight);
    b = self.searchDisplayController.searchBar.frame;
    self.searchDisplayController.searchBar.frame = CGRectMake(b.origin.x, b.origin.y, b.size.width, self.tableView.rowHeight);

    //BELOW WORKS PERFECT BUT IS A PRIVATE METHOD, HENCE I AM NOT SUPPOSED TO USE IT
    //[self.searchDisplayController.searchBar setCombinesLandscapeBars:NO];

     }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

sch*_*349 10

我也遇到过这个错误,我已经向Apple提交了一份报告,并要求提供技术帮助.我会告诉你它是怎么回事.与此同时,我将简要介绍一下这个bug.

在iPhone上,为了在横向模式下保留珍贵的垂直屏幕空间,UISearchDisplayController将UISearchBar设置为在单个水平布局中组合其搜索栏和搜索字段.这很好用,因为屏幕的水平尺寸增加(横向480点).不幸的是,它在iPad上工作得不是很好,在横向模式下,首先不需要改变UI因为你有足够的垂直空间.在UISplitViewController的主视图中,您仍然只有320像素的水平显示空间,而不是增加的480的iPhone.结果是iSore.

据推测,问题在于UISearchDisplayController在其willRotateToInterfaceOrientation:duration:方法中表现不佳.具体来说,在它的UISearchBar上设置combineLandscapeBars属性之前,无需检查它是否在iPhone上.代码中的私有API kludge起作用,因为它修复了UISearchDisplayController中的疏忽.但是,当然苹果公司会因为使用未记录的API而使古人对你的愤怒降下来,所以你做不到.真的,我们受苹果公司的支配.

如果你愿意放弃UISearchDisplayController的眼睛和便利,你可以使用UISearchBar没有UISearchDisplayController并自己管理演示的各个方面.显然,如果Apple的API工程师完成了他们的工作,这需要更多代码并且毫无意义,但它至少会解决显示错误.

如果你是Apple,你可以使用自己的未记录的API,这就是Mail.app没有这个问题的原因.

UPDATE

我向Apple提交的错误报告是#8344719.