UIprogressView状态基于在UITextfield上输入的文本

时间:2014-02-06 04:55:45

标签: ios

我想根据UIprogressView中输入的文字提升UITextfield状态。

如果我输入3个字母,则应为25%,如果是5个字母,则应为50%,依此类推

3 个答案:

答案 0 :(得分:1)

最简单的解决方案是使用textFieldDidChangeMethod 由于UITextFieldDelegate没有,您可以使用以下方法轻松添加UITextField(或任何子类化textField)的行为:

[yourTextField addTarget:self 
                  action:@selector(textFieldDidChange) 
        forControlEvents:UIControlEventEditingChanged];

然后在目标方法中:

- (void) textFieldDidChange
{
    float txtProgress = yourTextField.text.length / 10.0;
    [yourProgressView setProgress:txtProgress animated:YES];
}

编辑:您还可以使用UITextFieldTextDidChangeNotification作为controlEvent 两者似乎都很好。

答案 1 :(得分:0)

处理TextField Delegate方法。每次触发此方法时计算文本字段长度。根据长度,您应用逻辑来更新UIProgressView。

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    NSLog(@"textFieldShouldBeginEditing");
    return YES;
}

- (void)textFieldDidBeginEditing:(UITextField *)textField{           
    NSLog(@"textFieldDidBeginEditing");
}

答案 2 :(得分:-1)

您必须实现UITextField

的委托方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    int lenghtOfText = [textField.text length];

    if (lenghtOfText == 3)
    {
        // progress  25%
    }

    else if (lenghtOfText == 5)
    {
        // progress 50%
    }

    return YES;
}