文字列をユーザー入力の文字と比較したい。たとえば、ユーザーに「私はりんごを持っています」と入力させたいとします。入力をこの文字列と比較して、入力が正しいかどうかを確認します。間違った文字を入力すると、iPhone が振動してすぐに知らせます。問題は、スペースのような一部の文字がデリゲート メソッドを 2 回呼び出すことです。
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
スペース キーを押すと、最初にテキストと ' ' を比較すると、結果は同じ文字であることがわかります。しかし、その後、文字列のインデックスを次の文字に進める必要があります。デリゲート メソッドが 2 回目に呼び出されると、iPhone が振動します。この問題を解決する方法についてのアイデアはありますか?
これが私のコードです:
strText = @"I have an apple.";
index = 0;
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
NSRange rg = {index, 1};
NSString *correctChar = [strText substringWithRange:rg];
if([text isEqualToString:correctChar])
{
index++;
if(index == [strText length])
{
// inform the user that all of his input is correct
}
else
{
// tell the user that he has index(the number of correct characters) characters correct
}
}
else {
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);
return NO;
}
return YES;
}