如何强制键盘保持显示?
问题描述:
我有一个IBAction,当有人在字段中输入文本时被调用。然后我验证输入。如果我确定有错误,我会显示一条消息,并希望用户再次进入同一字段。而不是让他们选择文本字段来使键盘(这工作正常),我想只留下键盘显示。如何强制键盘保持显示?
我在做[SymbolEntered becomeFirstResponder];
作为我的IBAction中的最后一个声明,但键盘仍然消失。我把它放在错误的地方?任何帮助,将不胜感激。谢谢。
- (IBAction)textFieldDoneEditing:(id)sender {
DebugMsg.text = nil;
DebugMsg2.text = nil;
DebugMsg3.text = nil;
NSLog (@"done editing");
NSLog (@"%@", SymbolEntered.text);
if ([SymbolEntered.text isEqualToString:nil])
{
Result.textColor = [UIColor redColor];
Result.text = @"You must enter a symbol!";
[SymbolEntered becomeFirstResponder];
}
else
{
if ([SymbolEntered.text isEqualToString:
[NSString stringWithCString:elements_table2[el_tbl_idx-1].element_symbol]])
{
correct_count++;
Result.textColor = [UIColor greenColor];
Result.text = @"Correct!";
Score.hidden = FALSE;
Score.text = [NSString stringWithFormat:@"Score: %d out of %d - %d Percent", correct_count, el_count+1,
(correct_count*100)/(el_count+1)];
GetNextElementButton.hidden = FALSE;
SymbolEntered.enabled = FALSE;
el_count++;
attempts = max_tries + 1;
}
else
{
Score.hidden = TRUE;
Result.textColor = [UIColor redColor];
if (attempts < max_tries)
{
if (attempts+1 == max_tries)
{
Result.text = @"Sorry, one more try -";
}
else
{
Result.text = @"Sorry, try again - ";
}
GetNextElementButton.hidden = TRUE;
attempts++;
}
else
{
Result.text = [[NSString alloc] initWithFormat: @"Sorry. The correct answer is %@",
[NSString stringWithCString:elements_table2[el_tbl_idx-1].element_symbol]];
Score.hidden = FALSE;
Score.text = [NSString stringWithFormat:@"Score: %d out of %d - %d Percent", correct_count, el_count+1, (correct_count*100)/(el_count+1)];
GetNextElementButton.hidden = FALSE;
SymbolEntered.enabled = FALSE;
el_count++;
}
}
}
[SymbolEntered becomeFirstResponder];
NSLog (@"end of textfieldoneediting");
}
答
您可以在UITextField textFieldShouldEndEditing:delegate方法中进行验证。如果您从该回拨中返回NO,则文本字段将保持第一响应者的身份,并且键盘不会消失。 (当然,如果还没有,则必须使控制器对象成为文本字段的代表)。
答
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
试试这将退出键盘。
在您的源代码中的任何位置调用了'resignFirstResponder'? – Espresso 2012-04-25 00:07:29
不在此IBAction中,但在显示键盘时,它在IBAction中被调用以获得背景抽头。 – Rick 2012-04-25 00:46:12