UISearchBar Таблица Разделы Заголовки указателей перекрываются - PullRequest
8 голосов
/ 15 января 2010

Как изменить ширину UISearchBar, когда он находится внутри заголовка таблицы, чтобы индекс раздела не перекрывал текстовое поле? Я хочу воссоздать ту же раскладку, что и в представлении контактов телефонного приложения.

Ответы [ 3 ]

5 голосов
/ 07 апреля 2010

Одним из возможных решений является добавление пользовательского представления в tableHeaderView. Вот что я сделал:

searchBar - это UISearchBar, который я объявил в заголовочном файле. Я создал UIView и добавил UINavigationBar для всей ширины и добавил короткий UISearchBar поверх него. Затем я наконец назначил UIView для tableHeaderView.

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290.0, 44.0)];

UIView *customTableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
UINavigationBar *dummyNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
[customTableHeaderView addSubview:dummyNavigationBar];
[customTableHeaderView addSubview:searchBar];
[dummyNavigationBar release];

self.tableView.tableHeaderView = customTableHeaderView;
[customTableHeaderView release];

Более элегантным решением может быть растяжение UISearchBar с помощью свойства contentStretch. Я все еще должен попробовать это и проверить, работает ли он.

1 голос
/ 01 февраля 2013

Вы имеете в виду A-Z букв алфавита в правой части экрана, переполняющих строку поиска, как показано на этом скриншоте, где буквы "A" и "B" появляются в правом краю панели поиска?

enter image description here

(а) Я не могу найти способ избежать этой проблемы переполнения алфавита. Подход, связанный с ответом Скотта Маккаммона, здесь запрещен Apple (и даже тогда я не уверен, что это решит эту проблему).

(b) Я вижу такое поведение в приложениях Apple Contacts в iOS 6.0.1 на моем iPod touch (4-го поколения).

(c) Полагаю, логически это функция, а не ошибка, так как строка поиска находится в заголовке табличного представления. Заголовок является частью табличного представления и прокручивается как часть табличного представления, поэтому, возможно, имеет смысл нарисовать индексный алфавит, как это происходит с остальной частью табличного представления.

Эта проблема становится большей проблемой, когда у вас есть кнопки области видимости. Для кнопок области справа не зарезервировано пространство, поэтому индексный алфавит отображается справа сверху самой правой кнопки.

0 голосов
/ 01 июля 2010

Если вы используете UISearchDisplayController, желаемое поведение будет работать автоматически, как отмечено в этом ответе .

...