1

のテキストの変更を検出しようとしてtextFieldいますが、固有のエラーがあります。以下のコードは、impactLabel1 テキストを以前に設定された変数 impactlabel1 と比較します。textField変数に等しくない変更がある場合、setHeadingsButton が表示されます。にスペースのない単一の単語がある場合、これは完全に機能しtexfieldます。ただし、単語が 2 つある場合は、同じであっても等しくないと考えます。はNSLog、両方の値を同じものとして表示します。

-(void) textFieldDidEndEditing:(UITextField *)textView
{
NSLog (@"%@", impactLabel1.text);
NSLog (@"%@", impactlabel1);    

if (impactLabel1.text != impactlabel1)
{
    [setHeadingsButton setAlpha:1];
}
    NSLog (@"%@", impactLabel1.text);
    NSLog (@"%@", impactlabel1);
}
4

2 に答える 2

5

「!=」演算子の代わりに isEqualToString メソッドを使用する必要があります。その演算子は、実際の文字列値ではなく、ポインターを比較します。

-(void) textFieldDidEndEditing:(UITextField *)textView
{
NSLog (@"%@", impactLabel1.text);
NSLog (@"%@", impactlabel1);    

if (![impactLabel1.text isEqualToString: impactlabel1])
{
    [setHeadingsButton setAlpha:1];
}
    NSLog (@"%@", impactLabel1.text);
    NSLog (@"%@", impactlabel1);
}
于 2013-05-09T22:39:29.540 に答える
2

試す:

if (![impactLabel1.text isEqualToString:impactlabel1) ... 

impactlabel1 NSString* 変数には他の名前を使用することをお勧めします。これは、impactLabel1 UILabel* オブジェクトと混同しやすいためです。

于 2013-05-09T22:40:58.133 に答える