我正在研究一种情况,当用户在搜索栏上键入“$”作为第一个字符时,系统应在其后添加另一个 $,例如:用户键入“$”并且系统添加“$”因此搜索栏上的文本应该看起来像'$$'。
我正在实施它,如下所示:
- (BOOL)searchBar:(UISearchBar *)searchBar shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if ([text hasPrefix:@"$"])
{
text = [text stringByAppendingString:@"$"];
self.searchBar.text = text;
}
return YES;
}
问题:替换文本实际上是如何工作的?我的理解是,当用户键入'$'时,上述方法中的文本参数具有'$'作为值,并且在方法执行后应该用'$$'替换?但在执行此方法后,我得到 '$$$' 作为搜索栏上的最终字符串。但是,如果我返回 NO,对于此方法,我会在搜索栏上看到“$$”,但它会阻止我在搜索栏上输入任何其他内容。
我在这里错过了什么吗?我试图了解这种方法实际上是如何工作的。