5

我想知道用户刚刚输入的当前输入字符。比较新旧输入字符串似乎可行,但它必须是我想尝试的最后一件事。有什么建议吗?我想 iOS SDK 中有一些方法可以更好地做到这一点。

4

3 回答 3

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

来自 UITextFieldDelegate 应该可以帮助你。

它不仅用于替换文本,每当用户按下键盘上的键时也需要调用它。(然后范围的长度将为 0,并且该位置将是当前插入位置)。

有关更多信息,请参阅文档:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html#//apple_ref/doc/uid/TP40006991-CH3-SW9

于 2012-04-20T14:18:48.667 回答
3

如果您想在字符进入时比较字符串,最好使用

[textField addTarget:self action:@selector(compareInput) forControlEvents:UIControlEventEditingChanged];

-(void)compareInput
{
    if ([textField.text isEqualToString:compareString])
        NSLog(@"They're the same!");
}

比代表:

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

如果您实际上只是想比较字符,那么委托方法就可以了。该变量string包含键入的字符。

例如,当用户foo输入 UITextField 时,上述方法会发生这种情况:

用户类型:f,发生这种情况:

[textField addTarget:self action:@selector(compareInput) forControlEvents:UIControlEventEditingChanged];

立即调用compareInput,这封信f可通过 textField.text 获得:

-(void)compareInput
{
    NSLog(textField.text); //prints `f`
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(textField.text); //prints nothing
    return YES;
    //after returning YES, textField.text will contain `f`
}

用户类型:o,发生这种情况:

[textField addTarget:self action:@selector(compareInput) forControlEvents:UIControlEventEditingChanged];

立即调用compareInput,字符串fo可通过 textField.text 获得:

    -(void)compareInput
{
    NSLog(textField.text); //prints `fo`
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSLog(textField.text); //prints `f`
    return YES;
    //after returning YES, textField.text will contain `fo`
}

我可能不是很清楚,但我希望它能给你一些见解!

于 2012-04-20T15:00:03.017 回答
0

此方法将在 UITextField 中显示当前输入

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *letters;
    if ([textField.text isEqualToString:@""]){
        letters = string;
    }else if ([string isEqualToString:@""]){
        if ([textField.text length] > 0) {
            letters = [textField.text substringToIndex:[textField.text length] - 1];
        }
    }else{
        letters = [textField.text stringByAppendingString:string];
    }

    NSLog(@"letters %@\n", letters);

    return YES;
}
于 2015-11-11T18:54:59.943 回答