2014-02-14 2 views
1

В UITableView У меня есть скрытый UISearchBar по умолчанию при запуске приложения. Позже, если пользователю нужно найти термин, есть UIButton действие, которое показывает UISearchBar и клавиатуру. Проблема заключается в том, что после выполнения поиска я не знаю, как отменить поиск или закрыть UISearchBar. Если пользователь нажимает кнопку поиска на клавиатуре, клавиатура исчезает, это нормально, но если пользователь нажимает кнопку UISearchBar Cancel, все происходит.закрытие UISearchBar после показа результатов

Это мой код, чтобы скрыть UISearchBar:

- (void)hideSearchBar { 

    CGRect newBounds = self.tableView.bounds; 
    if (self.tableView.bounds.origin.y < 44) { 
     newBounds.origin.y = newBounds.origin.y + self.searchBar.bounds.size.height; 
     self.tableView.bounds = newBounds; 

    } 
} 

И это мой код, чтобы показать UISearchBar и клавиатуры:

- (IBAction)showSearchBar:(id)sender { 


    [self.searchBar becomeFirstResponder]; 
} 
+3

Использование 'searchBarCancelButtonClicked:' метод делегата от 'UISearchBar' и называют' hideSearchBar '. – Akhilrajtr

ответ

1
-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 

выше метод делегата UISearchBar, это используйте для управления UISearchBar, когда вы нажимаете кнопку отмены.

Поставьте вам код в соответствии с вашими требованиями.

Такие как

-(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar 
{ 
    searchBar.text = @""; // clear text of search 
    [searchBar resignFirstResponder]; // keyBoard is hide 
    [self.searchBar setShowsCancelButton:NO animated:YES]; // remove cancel button from searchBar 
    // Etc.. 
} 

Редакцией:

Вы можете объявить и доступ UISearchBar такие как,

@interface myViewController : UIViewController <UISearchBarDelegate, UISearchBarDelegate> // add delegate and datasource to .h file 

@property (nonatomic, strong) UISearchBar *searchBar; 

И .m создание файла UISearchBar

self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0f,38.0f,320.0f,0.0f)]; // set frame as you want. 
[self.searchBar sizeToFit]; 
self.searchBar.delegate = self; 
self.searchBar.tintColor = [UIColor colorWithRed:(93/255.f) green:(156/255.f) blue:(13/255.f) alpha:1.0f]; // set color as you want. 
[self.view addSubview:self.searchBar]; 
+0

Спасибо за предложение, но я лесозаготовка своего метода, и он никогда не вызывается ... – mvasco

+0

@mvasco - проверить мой отредактированный ответ :) – iPatel

+0

Это моя Интерфейсная часть: @interface ToDoItemsTableViewController: UITableViewController mvasco

1

Попробуйте это,

Используйте searchBarCancelButtonClicked: метод делегата от UISearchBar и вызвать hideSearchBar

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar { 

    [searchBar setText:@""]; 
    [searchBar resignFirstResponder]; 
    [self hideSearchBar]; 
} 

Добавить

- (void)viewDidLoad { 
    ... 
    self.searchBar.delegate = self; 
} 
+0

Благодарим вас за предложение, но я регистрирую ваш метод и его никогда не называют ... – mvasco

+0

Вы установили делегат 'UISearchBar'? если он не установлен как self.searchBar.delegate = self; – Akhilrajtr

+0

таким образом и где? self.searchBar.delegate = self; – mvasco

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