Я хочу, чтобы иметь возможность искать строку без символа в ней. Проблема в том, что клавиатура по умолчанию не отображает кнопку поиска, когда в UISearchBar ничего не написано.iPhone: UISearchBar, как искать "" String?
Любая идея?
Спасибо, Markus
Я хочу, чтобы иметь возможность искать строку без символа в ней. Проблема в том, что клавиатура по умолчанию не отображает кнопку поиска, когда в UISearchBar ничего не написано.iPhone: UISearchBar, как искать "" String?
Любая идея?
Спасибо, Markus
К счастью, я просто работал над кодом, который делает именно это. Это немного рубить, но вы можете найти UITextField, который встроен в UISearchBar, затем выключите enablesReturnKeyAutomatically
:
UITextField *searchBarTextField = nil;
for (UIView *subview in searchBar.subviews)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
Мне тоже нравится этот ответ, но я не думаю, что он интуитивно понятен с точки зрения пользователя. – Jordan
Я использовал это для совершенно другой цели: вскрыть клавиатуру по умолчанию при первом показе представления с помощью UISearchBar, вызвав [searchBarTextField статьFirstResponder]. Настоящая загадка, почему они не перегрузили startFirstResponder для UISearchBar, чтобы сделать правильную вещь и показать клавиатуру. Благодаря! –
Тип * и использовать его в качестве заполнителя в вашей программе "" (ничего).
Поиск ""
походит на поиск nil/NULL: запрос вернет все записи, которые пусты или null.
*
является характером а подстановочных используются в большинстве поисковых наценки, и он будет возвращать все матчи.
Просто для уточнения далее: '' '' is ** not ** nil/NULL, но считается * пустой строкой * (пустой строка). – Sean
Обычно, когда добавляется больше символов, отфильтрованный набор уменьшается в счетчике. Следовательно, если все символы поиска удалены, то что должно произойти «естественно», так это то, что возвращается весь нефильтрованный набор. то есть. поиск ничего не интуитивно более тесно связан с отсутствием фильтра. –
при поиске текста. трудно найти строку без символа ... так что вы должны работать на
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
//write code here
}
он будет работать автоматически
это то, что я сделал
Чтобы удалить клавиатуру на забой до пустой :
-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
if ([searchText isEqualToString:@""]) {
[searchBar resignFirstResponder];
}
}
вам также потребуется установить UITextField в вашем uisearchbar к тому же делегату, не забудьте добавить к этому делегату (в м Контекст Y Кодекса делегат сам)
for (UIView *view in searchBar.subviews){
if ([view isKindOfClass: [UITextField class]]) {
UITextField *tf = (UITextField *)view;
tf.delegate = self;
break;
}
}
после этого добавить их к своему делегату
- (void)searchBarCancelButtonClicked:(UISearchBar *) aSearchBar {
[aSearchBar resignFirstResponder];
}
-(BOOL)textFieldShouldClear:(UITextField *)textField
{
[self performSelector:@selector(searchBarCancelButtonClicked:) withObject:textField.superview afterDelay: 0.1];
return YES;
}
, когда любые из этого триггера, выполнить свой поиск для «» строк
Daniels ответа отлично работает до iOS 7.
IOS 7 Update
- (void)searchBarTextDidBeginEditing:(UISearchBar *) bar
{
UITextField *searchBarTextField = nil;
NSArray *views = ([[[UIDevice currentDevice] systemVersion] floatValue] < 7.0f) ? bar.subviews : [[bar.subviews objectAtIndex:0] subviews];
for (UIView *subview in views)
{
if ([subview isKindOfClass:[UITextField class]])
{
searchBarTextField = (UITextField *)subview;
break;
}
}
searchBarTextField.enablesReturnKeyAutomatically = NO;
}
Почему вы хотите найти ничего? – BoltClock
, потому что пустая строка поиска возвращает все ... поиск похож на фильтр ... – Markus