Iphone 如何在UITextField中显示用户键入的字符之前访问该字符

Iphone 如何在UITextField中显示用户键入的字符之前访问该字符,iphone,objective-c,ios,uitextfield,uikeyboard,Iphone,Objective C,Ios,Uitextfield,Uikeyboard,我正在编写一个应用程序,在这个应用程序中,我需要通过某种方法逐个验证用户输入到UITextField的文本 困难的是,客户端希望在用户看到UITextField中的字符之前执行所有验证,因为可能存在这样的情况,即他的服务器应用程序不支持'$'符号,因此在我的验证方法中,我应该将其替换为'USD'字符串,而他不希望用户看到'$',只要马上“美元” 我知道诸如UIControlEventEditingChanged等事件,但仍然不知道两件事: 如何在用户键入的字符出现在UITextField中之前

我正在编写一个应用程序,在这个应用程序中,我需要通过某种方法逐个验证用户输入到
UITextField
的文本

困难的是,客户端希望在用户看到UITextField中的字符之前执行所有验证,因为可能存在这样的情况,即他的服务器应用程序不支持
'$'
符号,因此在我的验证方法中,我应该将其替换为
'USD'
字符串,而他不希望用户看到
'$'
,只要马上“美元”

我知道诸如
UIControlEventEditingChanged
等事件,但仍然不知道两件事:

  • 如何在用户键入的字符出现在
    UITextField
    中之前访问该字符并在其中执行验证

  • 如何替换这个字符'on the fly',并手动将其放入UITextField(但我想我只是将其附加到
    [[textField]text]
    NSString


提前感谢您的帮助:)

实现
UITextFieldDelegate
方法
textField:shouldChangeCharactersRange:replacementString:
,例如:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    BOOL validated = ...; //do your validation
    return validated;
}

与omz的答案类似,但如果您需要,则需要更完整的代码:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{

    NSString *filtered;
    filtered = [string stringByReplacingOccurrencesOfString:@"$" withString:@"USD"];

    //optionally if you want to only have alphanumeric characters
    //NSMutableCharacterSet *mcs1 = [[[NSCharacterSet letterCharacterSet] invertedSet] mutableCopy];  //only alphabet character
    //[mcs1 removeCharactersInString:@"0123456789"];  
    //filtered = [[filtered componentsSeparatedByCharactersInSet:mcs1] componentsJoinedByString:@""];
    //release mcs1;

    return [string isEqualToString:filtered];
}