1

我有一个方法, -(void)validateFormInput:(UITextField *)textField 当表单的“提交”按钮被按下时被调用。该方法执行以下操作:

1) 验证给定 textField 中的文本 2) 如果无效,则弹出一个警告框,在 UITextField 周围绘制一个红色边框并将焦点返回到该 UITextField。

问题是我没有将焦点重新回到无效的 UITextField。

这是验证方法 - 为什么这不将焦点重新放在无效的 UITextField 上?

谢谢!

//Called when form "submit" button is pressed
-(void)validateFormInput:(UITextField *)textField{
    //If Validation fails... 
    if([textField.text length] <1){ 
        //simple test case        
        textField.layer.borderWidth = 2.0f;
        textField.layer.borderColor = [[UIColor redColor] CGColor];
        textField.layer.cornerRadius = 5;
        textField.clipsToBounds = YES;

        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Alert"
            message:@"Please add a title"
            delegate:nil
            cancelButtonTitle:@"OK"
            otherButtonTitles: nil];
        [alert show];
        alert = nil;
        [textField becomeFirstResponder];               
    }
}
4

1 回答 1

2

您需要将委托添加到 self 并实现委托方法 alertView:didDismissWithButtonIndex:。不要忘记遵守 UIAlertViewDelegate 协议。

当调用此方法时,请让您的 textField 成为第一响应者。

于 2012-06-12T01:16:35.857 回答