0

ユーザーが入力できる文字数を制限しようとしています。私はそれが機能していますが、唯一の問題は、キーボードが閉じなくなったことです。たとえば、入力を 3 文字に制限したい場合、キーボードで 2 文字を入力して [完了] を押すとキーボードが閉じますが、3 文字を入力して [完了] を押しても、キーボードは理由についてのアイデアを閉じませんか?

ここに私のコードがあります

 (void)viewDidLoad
{
    NSLog(@"%@", self.chosenTime);
    [self startGame];
    [super viewDidLoad];

    self.nameTextField.delegate = self;
      NSLog(@"%@", self.playerName);
    NSString *timeString =  self.chosenTime;
    self.timer = [timeString intValue];
    self.timeSelected = [timeString intValue];
    self.scoreTimer = 1000;
    self.countdown.text = timeString;

    // Do any additional setup after loading the view.
}


- (IBAction)hideKeyboard:(id)sender {
    NSLog(@"Hello");
    [self.nameTextField resignFirstResponder];
}

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

1 に答える 1

2

これを試して、最後の 2 つの方法を次の 3 つに変更します。

- (void)hideKeyboardAction {
    [self.nameTextField resignFirstResponder];
}

- (IBAction)hideKeyboard:(id)sender {
    NSLog(@"Hello");
    [self hideKeyboardAction];
}

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

    BOOL shouldStayOpen = !([self.playerName length] >= 4); 

    if (!shouldStayOpen)
    {
        [self hideKeyboardAction];
    }

    return shouldStayOpen;
}
于 2012-05-15T10:25:43.707 に答える