0

嗨,我创建了一个 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;
}
4

1 回答 1

0

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

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

于 2012-05-23T08:37:39.760 回答