2014-01-17 3 views
1

Я пытаюсь настроить кнопку очистки UISearchBar. Я могу настроить пользовательское изображение для значка в нормальном состоянии, но я не знаю, как установить одно и то же изображение для состояния, когда у меня есть палец на кнопке. Он всегда имеет вид системы. Я попытался установить одинаковое изображение для всех доступных состояний, но не смог получить никаких результатов.Как настроить UISearchBar в iOS7 (кнопка Clear)

для iOS7:

[self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; 
    [self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted]; /// doesn't work 

не изменяется, когда я установить то же самое для UIControlStateHighlighted или UIControlStateSelected. Можно ли настроить эту кнопку в iOS7? В iOS6, когда я устанавливаю тот же значок для UIControlStateHighlighted, он работает правильно.

для iOS6:

[self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; 
    [self.searchBar setImage:[UIImage imageNamed:@"icon_X_black.png"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted]; /// it works 

Спасибо заранее.

+1

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

+0

@ShamsAhmed, как вы сказали, если изображения одинаковы, он не работает. Спасибо :) –

ответ

6

Это очень странное поведение iOS7 но решение обратный порядок отчетности в коде, если вы хотите установить один и тот же образ для двух состояний

[self.searchBar setImage:[UIImage imageNamed:@"icon_X_black"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateHighlighted]; 
[self.searchBar setImage:[UIImage imageNamed:@"icon_X_black"] forSearchBarIcon:UISearchBarIconClear state:UIControlStateNormal]; 

Также вы можете дублировать вы icon_X_black файл под разными названиями и использовать любой заказ.

+0

Спасибо, это работает, но странно :) –

2

Из документации на UISearchBar:

состояние

Государственный контроль.

Допустимые состояния: UIControlStateNormal и UIControlStateDisabled.

Похоже, что UIControlStateHighlighted здесь не поддерживается.

+1

Это действительно поддерживается. Попробуйте код ниже. – malex

+1

@malex Есть разница между «Это работает» и «Это поддерживается». Apple четко заявляет, какие состояния действительны. На данный момент это может сработать, но в будущих версиях iOS он легко может сломаться. –

+1

Я понимаю. Но в своей практике я предпочитаю решать проблему как «она работает», потому что оценка iOS показывает, что многие формально неподдерживаемые функции имеют очень долгую жизнь :) – malex

Смежные вопросы