2010-03-31 135 views
2

我有一个UITextField,我希望对每个字符敲击,第一个字符被删除。所以我每次只在我的textField中有一个字符。此外,我希望它显示控制台日志中的每一个水龙头。删除最后一个字符UITextField

我该怎么做?

回答

2

您需要实现shouldChangeCharactersInRange方法在您的文本字段代表:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange: 
        (NSRange)range replacementString:(NSString *)string{ 
    textField.text = @""; 
    return YES; 
} 

您可能需要检查的范围和字符串值涵盖所有可能的情况下(比如复制/粘贴操作)。该代码只是将文本字段的值设置为最后输入的字符。

0

的UITextField从UIControl继承,这样你就可以使用目标 - 动作机制是UIControl类的一部分:

[textField addTarget:self action:@selector(updateTextField) forControlEvents:UIControlEventValueChanged]; 

在操作方法,你可以只用最后一个字符替换的UITextField的文字和在控制台中记录该字符。需要注意的是因为改变的UITextField的文本将再次导致“updateTextField”的消息被发送第二次的目标,你将需要某种机制来确定是否更新与否:

- (void)updateTextField { 
    if(updateTextField == YES) { 
     updateTextField = NO; 
     NSString *lastChar = [textField.text substringFromIndex:[textField.text length]]; 
     [textField setText:lastChar]; 
     NSLog(@"%@", lastChar); 
    } else { 
     updateTextField = YES; 
    } 
} 

或者类似的东西无论如何...

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

    if (textField.text.length > 8) { 
     return NO; 
    } 
    return YES; 

} 
相关问题