Iphone 在UITextField(iOS)中检测当前输入字符
我想知道用户刚刚输入的当前输入字符。比较新旧输入字符串似乎有效,但这肯定是我最不想尝试的。有什么建议吗?我想iOS SDK中有一些方法可以更好地做到这一点Iphone 在UITextField(iOS)中检测当前输入字符,iphone,ios,input,keyboard,uitextfield,Iphone,Ios,Input,Keyboard,Uitextfield,我想知道用户刚刚输入的当前输入字符。比较新旧输入字符串似乎有效,但这肯定是我最不想尝试的。有什么建议吗?我想iOS SDK中有一些方法可以更好地做到这一点 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 从UITEXTFIELD中,代表应帮助您 它不仅用于替换文本,而且在用户按下键盘上的键时也会
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
从UITEXTFIELD中,代表应帮助您
它不仅用于替换文本,而且在用户按下键盘上的键时也会被调用。
(此时范围长度为0,位置为当前插入位置)
有关更多信息,请参阅文档:
如果要在输入字符时比较字符串,最好使用
[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
如果您只是想比较字符,那么委托方法就可以了。变量字符串
包含键入的字符
例如,当用户在UITextField中键入foo
时,上述方法会发生这种情况:
用户类型:f
,发生以下情况:
[textField addTarget:self action:@selector(compareInput) forControlEvents:UIControlEventEditingChanged];
[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];
[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`
}
我可能不太清楚,但我希望它能给你一些启示 此方法将在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;
}
@Thyraz
-(BOOL)textField:(UITextField*)textField shouldChangeCharactersRange:(NSRange)range replacementString:(NSString*)string{}
我想知道当前的输入字符,这个方法帮助很大@TRedman感谢您对我的深入了解。-(BOOL)textField:(UITextField*)textField shouldChangeCharactersRange:(NSRange)range replacementString:(NSString*)
最后一个参数字符串是当前输入!在渲染下一个角色之前检测。有没有其他的检测方法?