Проблема отклонения клавиатуры - Задача C - PullRequest
0 голосов
/ 23 июля 2011

Я установил делегат моего текстового поля на себя и добавил делегат для него в .h, но у меня есть проблема. Я хочу, чтобы клавиатура скрылась. Если я нажму что-нибудь, кроме текстового поля в представлении . Это возможно? Если так, как бы я это сделал?

Ответы [ 4 ]

1 голос
/ 04 мая 2014

Я нашел более простой способ скрыть клавиатуру, и он работает, когда вы щелкаете по экрану.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    // endEditing: This method looks at the current view and its subview hierarchy for the text field that is currently the first responder.
    // If it finds one, it asks that text field to resign as first responder
    [[self view] endEditing:TRUE];
}
0 голосов
/ 23 июля 2011

Если у вас есть IBOutlet для UITextField, вы можете отклонить клавиатуру, используя [textField resignFirstResponder];.При этом вам придется реализовать прослушиватели событий для всего остального в представлении.Если вы хотите, чтобы клавиатура скрывалась, когда пользователь нажимает фон представления , это можно сделать с помощью сенсорного события в реализации контроллера представления:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [textField resignFirstResponder];
}

Если у вас есть какие-либо кнопки илиподпункты, вам также нужно будет реализовать отдельные сенсорные события или действия для них.

0 голосов
/ 23 июля 2011

Вы можете сделать "взлом" ... Вот так:

- (void)textFieldDidBeginEditing:(UITextField *)textField{

   //glass is a class's property
   if(glass){
      self.glass=nil;
   }
   glass=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; //put the size you want.
   [glass addTarget:self action:@selector(hideGlass) forControlEvents:UIControlEventTouchUpInside];
   [self.view insertSubview:glass belowSubview:textField];
}

-(void)hideGlass{
  //remove your glass.
  [glass removeFromSuperview];
  //your textField resigns first responder.
  if([myTextField canResignFirstResponder]){
      [myTextField resignFirstResponder];
  }
}

Итак, в основном, вы должны добавить фиктивную кнопку прямо под вашим textField. Поэтому, когда вы касаетесь чего-либо еще, за исключением вашего textField, он сделает ваш textField resignFirstResponder и удаляет себя из представления.

Редактировать 1 (твик) Вам просто нужно заменить это:

if(glass){
    self.glass=nil;
 }

для этого:

if(glass){
   [glass release];
   glass=nil;
}
0 голосов
/ 23 июля 2011

Вам просто нужно реализовать следующие методы делегата:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
}
...