我只是在制作转换应用时啧啧称道。这很好,但我想扩展它。你输入一个华氏值,然后转换为摄氏度。很基本的。所以我也希望添加开尔文转换。但是代码只允许你插入一个华氏数字。因此,在添加开尔文文本字段后,我想检查哪个文本框中包含文本。所以我使用了以下代码:
- (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。但是转换动作不起作用,因为现在没有第一响应者。有关如何检查哪个文本框中包含文本,然后进行转换的任何线索?提前感谢您的帮助。
答案 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;