2011-01-23 2 views
3

Я использую UISearchBar в своем приложении, и он служит как для поля редактирования, так и для поиска. Поэтому, когда я хочу исчезнуть с клавиатуры, я должен использовать кнопку отмены в UISearchBar, но у меня не может быть этой кнопки отмены на экране, так как T может заставить клавиатуру исчезнуть, если ее не использовать без кнопки отмены. Пожалуйста, помогите мне, поскольку я новичок в разработке приложений для iPhone.Как отменить клавиатуру в UISearchbar?

Заранее благодарен!

ответ

9

Используйте это:


[UISearchBar resignFirstResponder]; 

Просто замените слово UISearchBar с именем объекта, который вы создали.

+5

Я думал, что эту проблему, но на самом деле мне нужно переопределить disablesAutomaticKeyboardDismissal потому что я использовал представление UIModalPresentationPageSheet. Просто упомянуть об этом здесь, если другие считают это трудным для отслеживания, как я. – Bryan

+1

Извините, должен был сказать UIModalPresentationFormSheet – Bryan

+0

Отличный комментарий @Bryan - это была моя проблема. – Ralphleon

1

Вы ищете способы отпустить клавиатуру или как сделать это программно? Если программно, то [UISearchBar resignFirstResponder]. Если вы ищете возможный способ достижения пользователем, вы можете либо сделать кнопку возврата на клавиатуре, чтобы отменить свой первый статус ответчика при нажатии, либо прикрепить к вашему представлению UIGestureRecognizer и настроить его так, чтобы при нажатии пользователем наружу клавиатура, эта клавиатура уходит.

1

просто все, что вам нужно сделать, это получить контроль UITextField от UISearchbar, а затем установить делегат UITextField, чтобы любой делегат, который будет выполнять -(void) textFieldShouldReturn:(UITextField *)textField

-(void)viewDidLoad{  
    UIView * subView; 
    NSArray * subViews = [searchbar subviews]; 
    for(subView in subViews) 
    { 
     if([subView isKindOfClass:[UITextField class]]) 
     { 
      ((UITextField*)subView).delegate=self; 
      ((UITextField*)subView).returnKeyType=UIReturnKeyDone; 
      break; 
     } 
    } 
} 

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 
    [textField resignFirstResponder]; 
    return TRUE; 
} 
Смежные вопросы