Почему UISearchBar и его кнопки объема показывают в одной строке?

Я видел пример Apple "TableSearch", что при касании его кнопки объема прибывают ниже панели поиска. http://developer.apple.com/iphone/library/samplecode/TableSearch/Introduction/Intro.html

Но когда я делаю свое собственное, выглядит хорошим сначала, но когда я затрагиваю, это похоже ужасный, кнопки объема и панель поиска показывают в той же строке как это: http://cl.ly/BN9

Что я должен сделать, делают его как пример "TableSearch" в iPad?

Я делаю все в 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];

     }

Заранее спасибо.

7
задан nacho4d 10 August 2010 в 09:12
поделиться

2 ответа

I ' Я тоже столкнулся с этой ошибкой, и я отправил отчет в Apple и запросил техническую помощь. Я дам вам знать, как это происходит. А пока я вкратце расскажу вам об этой ошибке.

На iPhone, чтобы сохранить драгоценное пространство вертикального экрана в ландшафтном режиме, UISearchDisplayController устанавливает UISearchBar так, чтобы объединить его панель поиска и поле поиска в единую горизонтальную компоновку. Это работает очень хорошо из-за увеличенного размера экрана по горизонтали (480 точек в альбомной ориентации). К сожалению, это не так хорошо работает на iPad, где в ландшафтном режиме изменение пользовательского интерфейса действительно не требуется, в первую очередь, потому что у вас много вертикального пространства. Кроме того, в главном представлении UISplitViewController по-прежнему остается только 320 пикселей по горизонтали, а не увеличенные 480 пикселей в iPhone. Результат - iSore.

Предположительно проблема в том, что UISearchDisplayController плохо себя ведет в своем методе willRotateToInterfaceOrientation: duration:.В частности, он не утруждает себя проверкой, находится ли он на iPhone или нет, до того, как он установит свойство combLandscapeBars в своем UISearchBar. Частный кладж API в вашем коде работает, потому что он исправляет эту оплошность в UISearchDisplayController. Но, конечно, Apple обрушит на вас ярость древних за использование недокументированных API, поэтому вы не можете. На самом деле мы находимся во власти Apple в этом вопросе.

Если вы готовы отказаться от привлекательной и удобной функции UISearchDisplayController, вы можете использовать UISearchBar без UISearchDisplayController и самостоятельно управлять аспектами презентации. Очевидно, для этого потребуется намного больше кода и было бы бессмысленно, если бы инженеры Apple API выполняли свою работу, но это, по крайней мере, устранит ошибку отображения.

Если вы Apple, вы можете использовать свои собственные недокументированные API, поэтому Mail.app не имеет этой проблемы.

ОБНОВЛЕНИЕ

Я отправил в Apple отчет об ошибке # 8344719.

10
ответ дан 6 December 2019 в 22:59
поделиться

Когда вы устанавливаете границы и фрейм для searchBar, как здесь для фрейма:

 blabla.searchBar.frame = CGRectMake (b.origin.x,
b.origin.y,
б. размер. ширина,
self.tableView.rowHeight);

Кажется, проблема с высотой. Для кнопок области требуется некоторое пространство под панелью поиска, поэтому вам следует увеличить высоту как границ, так и рамки.

Если вы показываете и скрываете кнопки осциллографа на каком-то событии, вам нужно каждый раз настраивать размер кадра.

0
ответ дан 6 December 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: