检测UITextField(iOS)中的当前输入字符

时间:2012-04-20 14:13:17

标签: iphone ios input keyboard uitextfield

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

3 个答案:

答案 0 :(得分:4)

- (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

答案 1 :(得分: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包含键入的字符。

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

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

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

立即调用compareInput,并通过textField.text提供字母f

-(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`
}

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

答案 2 :(得分: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;
}