键盘顶部有一个工具栏,上面有一个上一个和下一个按钮。当我按下一个按钮时,下一个文本字段应该成为第一响应者,但这不会发生。这是我的代码。
-(IBAction) nextfield {
if([name isFirstResponder] == TRUE) {
[name resignFirstResponder];
[surname becomeFirstResponder];
if(surname.editing == TRUE)
NSLog(@"surname");
}
if([surname isFirstResponder] == TRUE) {
[email becomeFirstResponder];
}
if([email isFirstResponder] == TRUE) {
[password becomeFirstResponder];
}
if([password isFirstResponder] == TRUE) {
[confirm becomeFirstResponder];
}
if([confirm isFirstResponder] == TRUE) {
[country becomeFirstResponder];
}
if([country isFirstResponder] == TRUE) {
if(country.text == @"United States") {
[state setEnabled:TRUE];
[state becomeFirstResponder];
}
else {
[type becomeFirstResponder];
}
}
if([state isFirstResponder] == TRUE) {
[type becomeFirstResponder];
}
if ([type isFirstResponder] == TRUE) {
[name becomeFirstResponder];
}
}
我进入Log“surname”但是光标没有出现,如果我输入了什么,它就不会出现在任何地方。
答案 0 :(得分:3)
所以你要检查名字是否是第一个响应者,如果是,那么将姓氏作为第一个响应者。
然后你检查并查看姓氏是否是第一个响应者,如果是,则将电子邮件作为第一个响应者。
然后你检查并查看电子邮件是否是第一个响应者,如果是......
你的问题是每个if语句都是正确的,因为成为第一响应者是一个直接的事情。
换句话说,您应该使用else if (...)
语句而不是离散的if语句。
答案 1 :(得分:0)
创建一个textfield对象数组,让我们说textFieldArray。然后在func
之后的prev和next按钮选项卡上调用 -(void)gotoPrevTextfield
{
for(int i=1 ;i<[textFieldArray count];i++)
{
if([textFieldsArray [i] isFirstResponder])
{
[textFieldsArray[i-1] becomeFirstResponder];
[textFieldsArray [i] resignFirstResponder];
break;
}
}}
-(void)gotoNextTextfield
{
for( int i=0 ;i<[textFieldArray count];i++)
{
if([textFieldsArray [i] isFirstResponder])
{
[textFieldsArray [i+1] becomeFirstResponder];
[textFieldsArray [i] resignFirstResponder];
break;
}
}}