2014-03-04 7 views
1

Если я положил код с отходом в мое условие if, клавиатура не уходит в отставку, если я прокомментирую условие if, которое моя клавиатура уходит в отставку.Отключить клавиатуру при нажатии «x» в UISearchBar

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
    if (searchText.length == 0) { 
     [searchBar resignFirstResponder]; 
    } 
} 

Я хочу уволиться клавиатуру, когда пользователь нажимает на кнопку «X», который, когда текст UISearchBar пуст. Есть ли способ сделать это, что работает?

+0

У вас есть ответ [здесь] [1] в других StackOverflow пост [1]: http://stackoverflow.com/a/4200431/921789 –

+0

Это не помогло мне. Этот был лучше http://stackoverflow.com/a/9084809/516765 – bruno

ответ

9

Просто уйти в отставку первый ответчик, но в следующем цикле выполнения, как это:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText 
{ 
    if ([searchText length] == 0) 
    { 
     [searchBar performSelector:@selector(resignFirstResponder) 
        withObject:nil 
        afterDelay:0]; 
    } 
} 

Испытано и она работает.

+0

Я сделал это, но использовал @selector (resignFirstResponder) – bruno

+0

Спасибо, я обновил свой ответ, чтобы он был более чистым. – RaffAl

0
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText { 
NSRange foundRange = [searchText rangeOfString:@"x"]; 
if (foundRange.location != NSNotFound) { 
    if (searchText.length == 0) { 
     [searchBar resignFirstResponder]; 
     } 
    } 
} 
+0

Уже нашел мой ответ, спасибо. http://stackoverflow.com/a/9084809/516765 – bruno

+0

Я не думаю, что это кнопка «x», на которую ссылался этот вопрос. – Tommy

1

Обновлено для switf 3:

func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 
    if searchBar.text == nil || searchBar.text == "" 
    { 
     searchBar.perform(#selector(self.resignFirstResponder), with: nil, afterDelay: 0.1) 
    } 
} 
Смежные вопросы