テキストフィールドに入力されたすべての文字をチェックしてから、最後に入力された文字に基づいて何かを印刷しようとしています。
これは私のコードです:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if ([textField.text hasSuffix:@"1"]) {
NSLog(@"Number : %@",textField.text);
}
else
{
NSLog(@"NOT ONE : %@",textField.text);
}
return YES;
}
つまり、1 が入力された場合にのみ、「NUMBER : 1」がログに出力される必要があります。それ以外の場合は、「NOT ONE : a」または何かが出力される必要があります。
しかし、次の出力が得られます。
入力は: 123456123
2012-12-21 17:41:14.365 vmsipPhone[1866:c07] NOT ONE :
2012-12-21 17:41:16.125 vmsipPhone[1866:c07] Number : 1
2012-12-21 17:41:17.549 vmsipPhone[1866:c07] NOT ONE : 12
2012-12-21 17:41:19.037 vmsipPhone[1866:c07] NOT ONE : 123
2012-12-21 17:41:20.100 vmsipPhone[1866:c07] NOT ONE : 1234
2012-12-21 17:41:21.694 vmsipPhone[1866:c07] NOT ONE : 12345
2012-12-21 17:41:24.844 vmsipPhone[1866:c07] NOT ONE : 123456
2012-12-21 17:41:25.725 vmsipPhone[1866:c07] Number : 1234561
2012-12-21 17:41:26.836 vmsipPhone[1866:c07] NOT ONE : 12345612
問題は、1 を入力すると最初の NOT ONE が表示され、
次に 2 を入力すると : Number : 1 が
1 文字の遅れのように表示されることです。
誰かがなぜそうなのか説明できますか?そして、私がやっていることに何か問題がありますか?