2010-07-17 2 views
2

У меня есть функция поиска с использованием UISearchBar, которая происходит «на лету», поэтому я думаю, что было бы более очевидно заменить эту кнопку «Поиск» на клавиатуре «Готово».iphone - кнопка поиска на UISearchBar

Есть ли способ сделать это?

благодарит

ответ

3

Вы можете изменить keyboardType свойство вашего объекта UISearchBar. Тем не менее, нет возможности напрямую изменить returnKeyType. Возможно, вы сможете отфильтровать и изменить его вручную. Проверьте документацию для UISearchBar и посмотрите, можете ли вы найти returnKeyType, так как это то, что вы ищете.

+0

спасибо, но, к сожалению, панель поиска не обладает этим свойством .. . :( – SpaceDog

2

Я совершаю это так:

// -- Basic UISearchBar setup. 
self.theSearchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0,0,320,38)]; 
[self.theSearchBar setDelegate:self]; 
[self.view addSubview:self.theSearchBar]; 

// -- Customize the returnKeyType of the search bar's nested UITextField. 
UITextField *searchBarTextField = [[self.theSearchBar subviews] objectAtIndex:1]; 
searchBarTextField.returnKeyType = UIReturnKeyGo; 

Надеется, что это полезно. Этот подход (т. Е. Захват подсмотра по индексу) может сломаться в будущем, но на данный момент он отлично работает.

-1

Не полагайтесь на то, что это второй подзаголовок, используйте isKindOfClass: метод для проверки. Это будет больше доказательств обновления iOS.

for (UIView *subview in self.theSearchBar.subviews) { 
    if ([subview isKindOfClass:[UITextField class]]) { 
     [(UITextField *)subview setReturnKeyType:UIReturnKeyGo]; 
     break; 
    } 
} 
0
for (UIView *view in _searchBar.subviews){ 
      if ([view isKindOfClass:[UITextField class] ]) { 
       UITextField *searchTf = (UITextField *)view; 
       searchTf.returnKeyType = UIReturnKeyDone; 
      } 
} 
0

Это работает для IOS 6

UITextField *searchBarTextField = [[searchBarObj subviews] objectAtIndex:1]; 
    searchBarTextField.returnKeyType = UIReturnKeyDefault; 

    [searchBarTextField setEnablesReturnKeyAutomatically:NO]; 

Это работает для прошивки 7

for (UIView *subview in self.searchBar.subviews) 
{ 
    for (UIView *subSubview in subview.subviews) 
    { 
     if ([subSubview conformsToProtocol:@protocol(UITextInputTraits)]) 
     { 
      UITextField *textField = (UITextField *)subSubview; 
      [textField setKeyboardAppearance: UIKeyboardAppearanceAlert]; 
      textField.returnKeyType = UIReturnKeyDone; 
      break; 
     } 
    } 
} 
Смежные вопросы