2010-10-10 63 views
1

我想获得如果uitextfield是空的,并且它是否在ibaction中运行以下代码。如何检测uitextfield长度

float uu = ([u.text floatValue]); 
float ss = ([s.text floatValue ]); 
float aa = ([a.text floatValue ]); 


float x1float = sqrt((uu * uu) +(2*aa*ss)); 


v.text = [[NSString alloc]initWithFormat:@"%f", x1float]; 

其中v.text是的UITextField

回答

5

我假设你在这里的主要挑战不是简单地检查UITextFieldtext属性是否为空,里面的文字,但得到它来执行检查用户类型。为了简单地检查文本字段是否为空,你只是做:

if (aTextField.text == nil || [aTextField.text length] == 0) 

但是,如果你想获得文本字段设置为“自动”进行计算时,它变空,请执行下列操作:设置UITextField的代表。在文本字段中更改任何字符之前调用代理的textField:shouldChangeCharactersInRange:replacementString:方法。在该方法中,这样做:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 
    [self performSelector:@selector(updateEmptyTextField:) withObject:textField afterDelay:0]; 
    return YES; 
} 

您的延迟之后执行updateEmptyTextField因为UITextField尚未应用于其代表刚刚批准的变化。然后,在updateEmptyTextField:做这样的事情:

- (void)updateEmptyTextField:(UITextField *)aTextField { 
    if (aTextField.text == nil || [aTextField.text length] == 0) { 
     // Replace empty text in aTextField 
    } 
} 

注:直到用户开始在文本字段中键入您可能需要手动运行一次检查时,首先显示您的看法,因为textField:shouldChangeCharactersInRange:replacementString:将不会被调用。

+0

伟大的职位非常感谢 – 2010-10-10 19:30:01

+0

不能使用[self updateEmptyTextField:textField];直接代替[self performSelector:@selector(updateEmptyTextField :) withObject:textField afterDelay:0];? – 2011-01-31 14:13:54