1

ユーザーが検索バーの最初の文字として「$」を入力すると、システムはその後に別の $ を追加する必要があるというシナリオに取り組んでいます。 「$$」のように見えるはずです。

以下のように実装しています。

- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ([text hasPrefix:@"$"])
    {
          text = [text stringByAppendingString:@"$"];
          self.searchBar.text = text;
    }

    return YES;
}

質問: 置換テキストは実際にどのように機能しますか? 私の理解では、ユーザーが「$」と入力すると、上記のメソッドのテキスト パラメータには値として「$」があり、メソッドの実行後に「$$」に置き換えられる必要がありますか? しかし、このメソッドを実行した後、検索バーの最後の文字列として「$$$」が表示されます。ただし、このメソッドで NO を返すと、検索バーに '$$' が表示されますが、それ以外は検索バーに入力できません。

ここで何か不足していますか?この方法が実際にどのように機能するかを理解しようとしています。

4

1 に答える 1

0

私はあなたがやっていることを正確には試していませんが、その方法のドキュメントから、いくつかの変更を加える必要があるようです. 最初に、テキストに $ が 1 つだけ含まれていることを確認する必要があります。そうしないと、テキスト フィールドに $ を入力するたびに、さらに $ が追加されます。第二に、そのケースがヒットしたときに、プロパティtextに値を設定する代わりに、パラメーターを @"$$" に変更しようとしましたか? searchBar.textこのメソッドから YES を返しているので、検索バーに先に進んでそのテキストを変更するように指示しているように思えますが、背後のテキストも変更しています (直接設定することにより)。

于 2013-10-16T00:40:20.597 に答える