我想要用于登录的两个UITextFields
,一个用于用户名,一个用于密码。在我无法解开第一个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 :(得分:1)
这样做,这件事很简单
设置文本字段的标记
usernameField.tag=1;
passwordField.tag=2;
然后是一个解除键盘的委托方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[userNameField resignFirstResponder];
[passwordField resignResponder];
}
return YES;
}
更新我的结果
答案 1 :(得分:0)
您在textFieldDidBeginEditing
每次在开始编辑时打开用户名字段的键盘。
-(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;
}
答案 2 :(得分: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];
}
这将确保如果用户名字段为空,则始终选中该字段。如果不是,则程序将选择用户触摸的任何文本字段进行编辑。
我希望这能回答你的问题,虽然有点晚。我认为这比使用和监控标签更简单。