在验证期间将焦点分配给UITextField

时间:2012-06-11 23:59:30

标签: objective-c validation ios5 uitextfield

我有一个方法, - (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];               
    }
}

1 个答案:

答案 0 :(得分:2)

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

调用此方法时,请将textField作为第一个响应者。