Здравствуйте!
— Не хотите ли войти
Tags Switch

Как русифицировать кнопку Cancel в UISearchBar

20 августа 2010

Как русифицировать кнопку 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, ООО «Инру»
Вход
Имя пользователя:
Пароль:
Или…
Twi
Отмена
Войти
Восстановить забытый пароль…