3

コンバージョンアプリを作成するためのヒントをたどりました。良かったのですが、さらに広げたいと思いました。華氏の値を入力してから摂氏に変換します。かなり基本的です。そのため、ケルビン変換も追加したいと思いました。ただし、このコードでは、華氏の番号をプラグインすることしかできません。したがって、ケルビンテキストフィールドを追加した後、どのテキストボックスにテキストが含まれているかを確認したいと思いました。だから私は次のコードを使用しました:

- (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と言っています。しかし、最初の応答者がいなくなったため、変換アクションは機能しませんでした。どのテキストボックスにテキストが含まれているかを確認してから変換を行う方法についての手がかりはありますか?助けてくれてありがとう。

4

9 に答える 9

8
    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] ;



        }
于 2012-07-25T12:47:11.817 に答える
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");
}
于 2012-07-25T12:46:40.227 に答える
1

メノの答えに応えて

!= @"" は使用しないでください

このポインターの等価性と文字列の等価性をチェックします

使用する:

[string isEqualToString:@""];
于 2013-04-05T05:08:09.240 に答える
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.
    }
}
于 2012-07-25T12:50:35.580 に答える
1
if(textView.text.length > 0)
{
   //text present
}
else
{
  //no text
}
于 2012-07-25T12:49:13.520 に答える
0

入力中にそれを知りたい場合、およびおそらくこの情報に基づいてアクションを実行する場合は、次を使用する必要があります。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
于 2012-12-16T14:18:25.883 に答える