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

我看过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];

     }

提前致谢.

我也遇到过这个错误,我已经向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.

相关文章
相关标签/搜索