Изменение размера текстового поля UISearchBar? - PullRequest
30 голосов
/ 17 февраля 2009

У меня есть UITableView с индексом на стороне; Я хочу добавить UISearchBar к нему, но индекс перекрывается с "x", чтобы очистить поиск. Я заметил, что в приложении «Контакты» текстовое поле в UISearchBar изменено, чтобы приспособиться к этому, но я не могу понять, как это сделать в моем собственном приложении.

Я попробовал следующее в моем viewDidLoad, но, похоже, оно не работает.

UITextField * textField = (UITextField *)[[self.search subviews] objectAtIndex:0];
CGRect r = textField.frame;

[textField setFrame:CGRectMake(r.origin.x, r.origin.y, r.size.height, r.size.width-30)];

Есть идеи?

Ответы [ 17 ]

1 голос
/ 20 мая 2010

При использовании Interface Builder ключом является использование «панели поиска и контроллера отображения поиска», а не «панели поиска».

1 голос
/ 08 августа 2009

Извините за некропост, но я нашел другой способ освободить немного места справа от текстового поля. У меня была проблема, что у меня было индексированное табличное представление с панелью поиска в качестве первой строки. Теперь индекс и панель поиска (сделанные в IB, кстати) пересекались. Он попробовал почти все безуспешно. Кажется, что свойства ширины и высоты текстильного поля не отвечают ... Итак, я придумал это:

searchBar.showsCancelButton = YES;

UIView *cButton = [searchBar.subviews objectAtIndex:2];

cButton.hidden = YES;

Я до сих пор не могу отрегулировать размер пространства, но сейчас это делается ... хотя ... довольно странное решение ...

0 голосов
/ 16 июня 2009

Другой пример (хотя и утомительный) - изменить размер панели поиска и заполнить «пробел» навигационной панелью. У меня работает.

0 голосов
/ 05 мая 2010

Работает нормально !!!

[searchBar setContentInset:UIEdgeInsetsMake(5, 0, 5, 35)];

0 голосов
/ 23 ноября 2009

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

Интересно, если я активирую поиск, то нажимаю отменить фон этого «исправленного»!?

Я использую SDK 3.0, поэтому я удалил элемент UISearchBar, созданный при перетаскивании UISearchDisplayController в мою NIB, затем сделал представление, как описано выше, и связал его с владельцем файла и выходом searchBar на экране поиска контроллер.

0 голосов
/ 17 февраля 2009

Это выглядит так, как будто Apple изменяет размер представления (обратите внимание, что индекс анимирован вправо, вне экрана), делая его больше экрана.

Я бы подумал, что вам нужно реализовать searchBarTextDidBeginEditing: метод UISearchBarDelegate, чтобы вызвать его в соответствующую точку. Это, однако, кажется немного хакерским, может быть, есть лучший способ сделать это.

0 голосов
/ 18 июня 2009

То, что я придумал, не намного лучше. По сути, я делаю пустое представление с фреймом, который я хочу использовать для панели поиска. Затем я создаю UIToolbar, чтобы перейти за панель поиска. Обязательно установите для его кадра тот же кадр, что и для UIView, за исключением , что значение Y должно быть -1; в противном случае вы получите две границы сверху. Затем создайте свой UISearchBar, но установите ширину фрейма на 30 (или что-либо еще, что имеет смысл для вашего приложения) меньше, чем UIView. Добавьте их как подпредставления и установите свой UIView в качестве tableHeaderView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...