ユーザーが検索バーの最初の文字として「$」を入力すると、システムはその後に別の $ を追加する必要があるというシナリオに取り組んでいます。 「$$」のように見えるはずです。
以下のように実装しています。
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text hasPrefix:@"$"])
{
text = [text stringByAppendingString:@"$"];
self.searchBar.text = text;
}
return YES;
}
質問: 置換テキストは実際にどのように機能しますか? 私の理解では、ユーザーが「$」と入力すると、上記のメソッドのテキスト パラメータには値として「$」があり、メソッドの実行後に「$$」に置き換えられる必要がありますか? しかし、このメソッドを実行した後、検索バーの最後の文字列として「$$$」が表示されます。ただし、このメソッドで NO を返すと、検索バーに '$$' が表示されますが、それ以外は検索バーに入力できません。
ここで何か不足していますか?この方法が実際にどのように機能するかを理解しようとしています。