我正在查看UITextField中的输入值是否超过100。 我正在使用textField:shouldChangeCharactersInRange:replacementString :(下面的代码)将输入的字符长度限制为3.我想知道是否有一种方法可以通过这种方法来清除输入,如果它超过100的值。
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSString *newString = [textField.text stringByReplacingCharactersInRange:range withString:string];
return !([newString length] >3);
}
答案 0 :(得分:3)
你有textField,所以你可以写
if([newString length] > 3]) {
textField.text = @"";
}
return YES;
编辑:
看起来你真正想要的是输入验证和检查数字> 100,你应该在你的问题中澄清,因为它是模棱两可的。
1。)验证输入是一个数字
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString*)string {
NSCharacterSet* numberSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
return ([string stringByTrimmingCharactersInSet:numberSet].length == 0);
}
2。)连接"编辑已更改" UITextField通过IB或代码
对此方法的操作- (IBAction)textFieldDidChange:(UITextField*)textField {
NSString* text = textField.text;
double number = [text doubleValue];
if(number > 100)
textField.text = @"";
}
3。)在设置文本字段以将其连接到方法
时添加此代码[textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged];
答案 1 :(得分:1)
我假设您想要的是在输入100的值时立即清除UITextField。 textField:shouldChangeCharactersInRange:replacementString:
是一种可以防止输入而不是实时处理输入的方法。不幸的是,UITextField没有名为TextFieldDidChange的委托方法,因此我们将不得不制作一个。
步骤1:使用UIControl方法实时跟踪textField的消息。
[myTextField addTarget:self action:@selector(UITextFieldDidChange) forControlEvents:UIControlEventEditingChanged];
第2步:创建UITextFieldDidChange:方法
-(void)UITextFieldDidChange:(UITextField*)textField{
NSString *text = textField.text;
double input = [text doubleValue];
if (input > 100){
textField.text = @"";
}
}