我想知道用户刚输入的当前输入字符。比较旧的和新的输入字符串似乎有效,但它必须是我想尝试的最后一件事。任何建议?我想iOS SDK中有一些方法可以更好地实现这一点。
答案 0 :(得分:4)
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
来自UITextFieldDelegate的应该可以帮到你。
每当用户按下键盘上的键时,不仅要求替换文本。 (范围的长度将为0,然后该位置将是当前的插入位置。)
答案 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;
}