如果输入的值超过指定的整数,则清除UITextField

时间:2014-07-08 21:04:17

标签: ios objective-c

我正在查看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);
}

2 个答案:

答案 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 = @"";
    }
}