возврат с клавиатуры - PullRequest
       0

возврат с клавиатуры

0 голосов
/ 20 августа 2010

У меня есть одно имя представления: myplay.h и myplay.m

мое представление содержит одно имя текстового поля txtplay ..

Содержит одно имя кнопки btnplay.

В событии кнопки я хочу проверить, что если uikeyboard открыт, закройте его.

Я знаю ниже код

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

и в событии нажатия кнопки

-(IBAction)btnplayclick:(id)sender
{
  [self.txtplay resignFirstResponder];  
  ....
  ....
}

Iхочу подать в отставку глобальный код.

Ответы [ 4 ]

3 голосов
/ 04 февраля 2011

Попробуйте это:

[self.view endEditing:YES];

Из документа:

endEditing:

Заставляет представление (или одно из его встроенных текстовых полей) отказаться от статуса первого респондента.

  • (BOOL) endEditing: (BOOL) сила

Этот метод просматривает текущее представление и его иерархию подпредставления для текстового поля, которое в настоящее время является первым респондентом. Если он находит его, он просит это текстовое поле подать в отставку в качестве первого респондента. Если для параметра force установлено значение YES, текстовое поле даже не запрашивается; он вынужден уйти в отставку.

Доступно в iOS 2.0 и более поздних версиях.

0 голосов
/ 04 февраля 2011

или просто напишите

  [self.view findAndResignFirstResponder];
0 голосов
/ 04 февраля 2011

Вызов resignFirstResponder для UITextField, который НЕ ОТВЕЧАЕТ первому респонденту, является безвредным запретом.

Итак:

for (UIView *candidate in self.subview) {
    if ([candidate isKindOfClass:[UITextView class]]) {
        [(UITextView *)candidate resignFirstResponder];
    }
}
0 голосов
/ 04 февраля 2011

Лучший способ, который я считаю универсальным и использовать ваш код в любом месте, - создать категорию для UIView:

@implementation UIView (FindFirstResponder)
- (UIView *)findFirstResonder
{
    if (self.isFirstResponder) {        
        return self;     
    }

    for (UIView *subView in self.subviews) {
        UIView *firstResponder = [subView findFirstResonder];

        if (firstResponder != nil) {
            return firstResponder;
        }
    }

    return nil;
}
@end

, а затем вызвать такой метод:1006 * Это отлично подходит для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...