Кнопка скрытия анимации UISearchBar - PullRequest
6 голосов
/ 09 июня 2010

У меня в настоящее время есть UISearchBar (прикрепленный к UISearchDisplayController), но я уменьшил ширину панели поиска, чтобы можно было отображать пользовательскую кнопку справа от нее, когда панель поиска не выбрана. Кнопка используется для доступа к другим представлениям.

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

Есть ли способ предотвратить анимацию панели поиска по всей ширине экрана?

Вот как я определил CGRect панели поиска:

self = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 250.0f, 45.0f)]

Ответы [ 2 ]

3 голосов
/ 17 июня 2010

В конце концов, ответ на этот вопрос был проще, чем я думал. По какой-то причине iPhone SDK заполняет ширину рамки панели поиска, поэтому мне приходится постоянно сбрасывать его до желаемого размера каждый раз, когда пользователь нажимает кнопку отмены и запускается событие searchBarCancelButtonClicked (). Простой [searchBar setFrame: frame] решил это. :)

Питер, проблема в посте, который вы связали, была немного другой, я уже смог изменить размер панели поиска до того, что я хотел, и мне нужно было остановить ее возврат к полной ширине. Спасибо за ссылку, хотя.

1 голос
/ 15 июня 2010

Этот SO post может помочь. Звучит так, будто вам нужно создать подкласс UISearchBar, чтобы он не делал обычное рисование.

ОБНОВЛЕНИЕ Я хотел использовать UISearchBar в UINavigationBar и изменить его размер, чтобы заполнить панель при прикосновении - как в приложении Safari. Единственный способ сделать это - напрямую использовать UISearchBar. Ваша проблема немного отличается, но вы можете попытаться получить желаемое поведение пользовательского интерфейса, используя только строку поиска; затем подключите логику для поиска потом; т.е. не полагаться на UISearchDisplayController?

...