我想知道用户刚刚输入的当前输入字符。比较新旧输入字符串似乎可行,但它必须是我想尝试的最后一件事。有什么建议吗?我想 iOS SDK 中有一些方法可以更好地做到这一点。
问问题
3417 次
3 回答
5
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
来自 UITextFieldDelegate 应该可以帮助你。
它不仅用于替换文本,每当用户按下键盘上的键时也需要调用它。(然后范围的长度将为 0,并且该位置将是当前插入位置)。
于 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 回答