2012-04-02 3 views
2

Можно создать дубликат:
How to make return key on iphone make keyboard disappear?Как сделать клавиатуру исчезают после нажатия кнопки возврата

У меня есть два текстовых поля на странице я работаю. Только первое текстовое поле исчезает после того, как я нажимаю return, но он не работает для второго текстового поля.

Вот методы в моем файле .m:

-(void) viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    self.cardNameTextField.delegate = self;  
    self.pinTextField.delegate = self; 
} 

-(BOOL) textFieldShouldReturn:(UITextField *)textField 
{  
    if (_cardNameTextField !=nil) 
    { 
     [self.cardNameTextField resignFirstResponder]; 
    } 
    else if (_pinTextField !=nil) 
    {  
     [self.pinTextField resignFirstResponder]; 
    } 
    return YES; 
} 

Подскажите пожалуйста :)

+0

Спасибо! Проверка этого. – Hans

+3

Я потерял счет того, сколько раз я видел этот вопрос на SO. Что бы это ни было, 'count ++;'! – tipycalFlow

+0

@SimonWithington Спасибо! он работает сейчас :) – Hans

ответ

1

Проблема с кодом, что вы проверяли, если ваши UITextField s были nil или нет, которые не равны nil. Поэтому всякий раз, когда условия проверялись, он всегда включался в первый случай и возвращался (другой находился в другом).Следующие сценарии также будут работать:

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

ИЛИ

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 
if (_cardNameTextField == textField) 
{ 
    [self.cardNameTextField resignFirstResponder]; 
} 
else if (_pinTextField == textField) 
{  
    [self.pinTextField resignFirstResponder]; 
} 
return YES; 
} 

ИЛИ

Просто удалите else ключевое слово во втором случае.

ИЛИ

Do it @Neelam Verma's way.

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

+0

+1 для правильного ответа. –

+0

awesome :) Спасибо! – Hans

1

Убедитесь, что вы установили делегат текстовое поле.

0

Используйте делегат UITextFieldDelegate

А в классе реализации, у вас есть два шага:

  1. набор делегата

    self.textField.delegate = я;

  2. реализовать этот метод

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

Спасибо! :) Я сделал это, и это сработало. – Hans

+0

@ Ханс, это здорово! –

5

Заменить выше кода с этим и попробовать, если это помогает:

-(BOOL) textFieldShouldReturn:(UITextField *)textField{ 

    if ([_cardNameTextField isEditing]) { 

    [self.pinTextField resignFirstResponder]; 
    } 

    if ([_pinTextField isEditing]) { 

    [self.cardNameTextField resignFirstResponder]; 

    } 

    return YES; 
    } 
0

Когда пользователь нажимает кнопку Готово на текстовой клавиатуры, ли End On Exit Событие будет сгенерировано, и в это время нам нужно сообщить текстовому полю, чтобы он отказался от управления , чтобы клавиатура исчезла. Чтобы сделать это, нам нужно добавить метод действий в наш класс контроллера. как об этом:

в вашем. ч:

- (IBAction)textFieldDoneEditing:(id)sender; 

в вашем .m:

- (IBAction)textFieldDoneEditing:(id)sender { 
[sender resignFirstResponder]; 
} 
0

Это может поможет вам!

- (void) textFieldDidEndEditing:(UITextField *) textField 
{ 
    [textField2 resignFirstResponder]; 
} 
Смежные вопросы