iOS UiTextField限制输入和键盘关闭

时间:2012-05-23 08:16:02

标签: ios uitextfield

您好我创建了一个UITextField,我想将它限制为只有3个字母。如果没有启用按钮,如果它为空则禁用按钮。有谁知道怎么做?

我已经给了它一个去但是如果我输入3个字母它显示3但不会关闭键盘它不能正常工作。我不禁感觉这是一个更好的方法来做到这一点。

继承人我做过的事情

- (void)hideKeyboardAction {

    NSLog(@"Hide");

    if([self.playerName length] >= 4){
        [self.nameTextField resignFirstResponder];
    } else if([self.playerName length] < 3) {
        [self.addToScores setEnabled:FALSE];
    }
}

- (IBAction)hideKeyboard:(id)sender {

  [self hideKeyboardAction];
}

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    self.playerName = [textField.text stringByReplacingCharactersInRange:range withString:string];

    if([self.playerName length] <4 ){
        [self hideKeyboardAction];
    }

    if([self.playerName length] > 3){
        [self.addToScores setEnabled:FALSE];
    }

    BOOL shouldStayOpen = !([self.playerName length] > 3); 
    return shouldStayOpen;
}

1 个答案:

答案 0 :(得分:0)

你不应该替换textField:shouldChangeCharactersInRange:replacementString:中的文本。您应该检查textField中文本的长度,比较范围的长度和replacementString的长度,并决定(返回YES / NO)是否替换。您还可以根据计算出的替换后文本长度,启用/禁用此方法中的按钮。

在我看来,没有必要隐藏键盘。