如何检查UITextfield中是否包含文本?

时间:2012-07-25 12:41:53

标签: iphone xcode ios5 uitextfield

我只是在制作转换应用时啧啧称道。这很好,但我想扩展它。你输入一个华氏值,然后转换为摄氏度。很基本的。所以我也希望添加开尔文转换。但是代码只允许你插入一个华氏数字。因此,在添加开尔文文本字段后,我想检查哪个文本框中包含文本。所以我使用了以下代码:

- (IBAction)convert:(id)sender 
{
if ([fahrenheit isFirstResponder]) 
{
    float x = [[fahrenheit text] floatValue];
    float y = (x - 32.0f) * (5.0f/9.0f);  //celcius
    float z = y + 273.15f;  //kelvin
    [celcius setText:[NSString stringWithFormat:@"%3.2f" , y]];
    [kelvin setText:[NSString stringWithFormat:@"%3.2f" , z]];
    [fahrenheit resignFirstResponder];
} else if ([celcius isFirstResponder])
{
    float x = [[celcius text] floatValue];
    float y = 32.0f + ((9.0f/5.0f) * x); //farenheit
    float z = x + 273.12f; //kelvin
    [fahrenheit setText:[NSString stringWithFormat:@"%3.2f" , y]];
    [kelvin setText:[NSString stringWithFormat:@"%3.2f" , z]];
    [celcius resignFirstResponder];
}else if ([kelvin isFirstResponder])
{
    float x = [[kelvin text] floatValue];
    float y = x - 273.15f; //celcius
    float z = 32.0f + ((9.0f/5.0f) * y); //farenheit
    [celcius setText:[NSString stringWithFormat:@"%3.2f" , y]];
    [fahrenheit setText:[NSString stringWithFormat:@"%3.2f" , z]];
    [kelvin resignFirstResponder];
}
}

这允许我在任何文本字段中输入数字然后转换。但后来我决定解雇键盘。我的代码说resignFirstResponder。但是转换动作不起作用,因为现在没有第一响应者。有关如何检查哪个文本框中包含文本,然后进行转换的任何线索?提前感谢您的帮助。

9 个答案:

答案 0 :(得分:7)

这是用于检查textView是否为空: -

if([textView.text isEqualToString:@""])
{
    //textView is Empty
}
else 
{
   //textView has text
}

如果你想检查它的空白区域,首先从字符串中删除空格,然后检查......就像这样 -

NSString *trimmedString = [tV.text stringByTrimmingCharactersInSet:
                           [NSCharacterSet whitespaceAndNewlineCharacterSet]];
if([trimmedString isEqualToString:@""])
{
       NSLog(@"textView is empty");
}
else
{
    NSLog(@"textView has some value");
}

答案 1 :(得分:7)

    if( [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] != nil &&  [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] != @"" )
        {

        // text field has text


// get text without white space

NSString * textWithoutWhiteSpace = [textField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet] ;



        }

答案 2 :(得分:5)

只需使用 hasText 方法。

实施例

if(_yourTextField.hasText)
{
    // Do something.
}

答案 3 :(得分:1)

if(textView.text.length > 0)
{
   //text present
}
else
{
  //no text
}

答案 4 :(得分:1)

更好的解决方案是动态进行所有转换,向所有textFields添加新操作

[textField addTarget:self action:@selector(textChanged:) forControlEvents:UIControlEventEditingChanged];

然后在方法textChanged中:做这样的事情:

- (void) textChanged:(UITextField *)tf {
    if (tf.text.floatValue > 0) {
        if (tf == fahrenheit) {
            //Do convertion for fahrenheit
        }
        .
        .
        .
        //etc.
    }
}

答案 5 :(得分:1)

回应Meno的回答

请勿使用!= @“”

检查指针相等与字符串相等

使用:

[string isEqualToString:@""];

答案 6 :(得分:0)

如果您想在输入过程中了解它,并且可能根据此信息执行操作,您应使用:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

答案 7 :(得分:0)

在其他一些答案中存在一些问题,比如他们没有使用isEqualToString,并且他们从我们感兴趣的字符串中删除潜在的字符,如果它们是否为零。

我没有足够的声誉发表评论,因此我将此作为答案发布。

对于类似的问题,我用它来检查我需要检查的每个文本字段是否为空:

- (BOOL) isEmpty:(UITextField*) field
{
    if (!(field.text) ||
       ([[field.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] isEqualToString: @""]))
    {
        return YES;
    }
    else
    {
        return NO;
    }
}

答案 8 :(得分:0)

如果您需要删除空格的NSString

NSString *nonWhiteSpaceString = [textfield.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

然后你可以使用长度作为布尔值:

BOOL textFieldHasText = nonWhiteSpaceString.length;