Отставка клавиатуры на ощупь - PullRequest
1 голос
/ 05 февраля 2012

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

Вот как это выглядит:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
if([self.speechBubble.speechText isFirstResponder] && [touch view] != self.speechBubble.speechText){
    [self.speechBubble.speechText resignFirstResponder];
}
[super touchesBegan:touches withEvent:event];
}

Это работает отличнодо сих пор, и удалит клавиатуру, если пользователь коснется где-либо за пределами текстового представления.Тем не менее, он работает только для конкретного объекта, для которого я его запускаю, поэтому если у меня есть два speechBubbles, он не будет работать.

Как я могу изменить это так, чтобы ЛЮБОЙ speechBubble имел тот же эффект?(Я мог бы переместить этот код из моего ViewController в мой класс SpeechBubble, но у меня возникла бы небольшая проблема с тем, как использовать [сенсорный вид], чтобы получать прикосновения за пределами представления SpeechBubble.) Спасибо

1 Ответ

3 голосов
/ 06 февраля 2012

Недавно я обнаружил кое-что, что может быть полезно для вас:

[self.view endEditing:YES];

Он подаст в отставку первого респондента из любого элемента, который в настоящее время имеет его, без необходимости вручную отслеживать его.1004 *

В отношении вашего примера кода, что-то вроде этого может работать, в зависимости от того, как работают ваши speechBubbles:

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  UITouch *touch = [[event allTouches] anyObject];
  // Note the '!':
  if(![[touch view] class] isKindOfClass [speechBubble class]]){
    // It's not a bubble they touched, dismiss the keyboard:
    [self.view endEditing:YES];
  }
  [super touchesBegan:touches withEvent:event];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...