Как русифицировать кнопку Cancel в UISearchBar
Как русифицировать кнопку Cancel в UISearchBar
Задача. Дан UISearchBar со стандартной кнопкой Cancel. К сожалению, нет никаких «стандартных» средств изменить текст на ней. Тем не менее, требуется это сделать без привлечения дополнительных «наклеек», которые закроют собой текст Cancel, а напишут поверх что-нибудь еще.
Общая методика решения. UISearchBar состоит из кучи UIView, вложенных друг в друга. Прогоним все по рекурсии, разберемся, кто из потока «дочерних» UIView является искомой кнопкой и сменим ее текст.
Исходный код
void nStaticReplaceStringInView(UIView * view, NSString * haystack, NSString * needle)
{
// Рекурсивный перебор всех UIView
for(int i=0; i<[view.subviews count]; i++)
{
nStaticReplaceStringInView([view.subviews objectAtIndex:i], haystack,needle);
}
// Поисковой блок: проверка, отвечает ли текущая UIView на собитие titleForState:. Если да - это кнопка
if([view respondsToSelector:@selector(titleForState:)])
{
//Если текущая метка кнопки - haystack, то ...
if(NSStrEq([view titleForState:UIControlStateNormal] , haystack))
{
// то сделай текущую метку needle
[view setTitle: needle forState: UIControlStateNormal];
}
}
}
Пример использования
nStaticReplaceStringInView(searchBar, @"Cancel", @"Отмена");
К сожалению, для защиты от спама, мы вынуждены закрыть комментарии для незарегистрированных пользователей
Зарегистрируйтесь или войдите, чтобы оставить комментарий.
© 2009-2012, ООО «Инру»