2014-01-22 4 views
0

У меня есть два UITextFields, которые я хочу использовать для входа в систему, один для имени пользователя и один для пароля. Прежде чем я не смог уволить клавиатуру в первом UITextField, но мне удалось это исправить, теперь проблема заключается в том, что после ее увольнения я не могу нажать на другой UITextField, чтобы ввести пароль, я просто застрял в имени пользователя UITextField с клавиатурой уволен, поэтому я ничего не могу сделать. Любые предложения о том, как убрать клавиатуру, а затем нажмите на другую UITextField, чтобы ввести информацию?Клавиатура на UITextField увольняет, но не может щелкнуть другой UITextField

@interface LoginViewController() <UITextFieldDelegate> 

@end 

@implementation LoginViewController 

@synthesize managedObjectContext, usernameField, passwordField; 

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

} 

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

    [self.usernameField becomeFirstResponder]; 
} 

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

//error occurs here 
[self.usernameField resignFirstResponder]; 
return YES; 
} 
+0

попытайтесь заменить [self.usernameField resignFirstResponder]; с [testField resignFirstResponder]; – Ankush

+0

Убедитесь, что вы подключили self.usernameField delegate или попробуйте [textField resignFirstResponder]; – kagmanoj

+0

жаль, ребята, почему-то это работает сейчас, и я не могу объяснить, но теперь у меня другая проблема, я изменил вопрос, не могли бы вы проверить обновленный вопрос? – user2076774

ответ

1

Просто сделай это, эта вещь будет просто

Установите метку для TextFields

usernameField.tag=1; 
passwordField.tag=2; 

Затем метод делегата уволить клавиатуру

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

[userNameField resignFirstResponder]; 
[passwordField resignResponder]; 
} 
return YES; 
} 

Update мне в результатом этого является

+0

Это работает, но для того, чтобы убрать клавиатуру, я должен дважды нажать «сделать», как мне это сделать, поэтому мне нужно только нажать ее один раз? – user2076774

+0

попробуйте это – Chandru

+0

Часть тегов помогла мне отличить UITextFields, так что этот ответ был полезен благодаря – user2076774

0

У вас есть проблемы с кодом на textFieldDidBeginEditing

Everytime открываемой клавиатуры для поля имени пользователя во время начала редактирования.

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

if(textField==self.usernameField) 
{ 
[self.passwordfield becomeFirstResponder]; 
} 

} 

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

    // [self.usernameField becomeFirstResponder]; 
} 

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

//error occurs here 
if(textField==self.passwordField) 
{ 
[self.view EndEditing:YES]; 
} 
return YES; 
} 
+0

Это работает, но для того, чтобы убрать клавиатуру, я должен дважды нажать «сделать», как мне ее сделать, поэтому мне нужно только нажать ее один раз? – user2076774

0

Самым простым решением вышеуказанной проблемы является изменение функции textFieldDidBeginEditing на:

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

    [textField becomeFirstResponder]; 
} 

И изменения textFieldShouldReturn к следующему

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

[textField resignFirstResponder]; 
return YES; 
} 

Приведенный выше код позволяет пользователю выбирать порядок ввода. То есть пользователь может сначала ввести пароль, а затем имя пользователя. Если вы хотите, чтобы пользователь ввел имя пользователя первый в любое время, вы можете изменить textFieldDidBeginEditing к

-(void) textFieldDidBeginEditing:(UITextField *)textField{ 
     if(textField == self.passwordField && [self.userField.text isEqualToString:@""]) 
      [self.usernameField becomeFirstResponder]; 
     else 
      [textField becomeFirstResponder]; 
    } 

Это гарантирует, что поле имени пользователя всегда выбирается, если он пуст. Если это не так, то программа будет выбирать любое текстовое поле, к которому пользователь прикасался, для редактирования.

Я надеюсь, что это ответит на ваш вопрос, хотя и немного поздно. Я считаю, что это проще, чем использовать и отслеживать теги.

Смежные вопросы