UITextField не уходит в отставку первого респондента? - PullRequest
0 голосов
/ 12 декабря 2011

Я представляю контроллер вида как модальный.Этот контроллер представления имеет несколько UITextFields, подключенных через IB.

Моя проблема в том, что при нажатии клавиши возврата вызывается метод делегата, но по какой-то причине вызов resignFirstResponder для данного textField не выполняется.Даже если я выведу сообщение на консоль в методе делегата textFieldShouldReturn, оно будет напечатано, но оно просто откажется вызывать метод resign.

В методе делегата shouldReturn у меня есть только:

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return  YES;
}

Этого никогда раньше не случалось со мной, просто он не уходит в отставку.Как я упоминал ранее, я могу поместить печать в консоль, просто чтобы убедиться, что метод shouldReturn вызывается и выполняется.

Я также попытался сделать это просто, чтобы увидеть, был ли установлен делегат или нет, и он уверенвнес изменения в поведение UITextField.

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    [textField setTextAlignment:UITextAlignmentCenter];
}

Эта проблема действительно ставит меня в тупик.Даже когда я пытаюсь вызвать resignFirstResponder для текстового поля напрямую, клавиатура не исчезнет.

-(BOOL)textFieldShouldReturn:(UITextField *)textField {
    if ([textField isEqual:self.productTextField]) {
        NSLog(@"Product textfield");
        [self.productTextField resignFirstResponder];
    } else if ([textField isEqual:self.quantityTextField]) {
        NSLog(@"Quantity textfield");
    }
    return YES;
}

Оба журнала работают со своими соответствующими текстовыми полями и печатают соответствующие сообщения.Но вызов метода все равно ничего не дает при отправке текстового поля напрямую.

Нашел ответ, по-видимому, UIPresentationFormSheet не позволяет избавиться от клавиатуры.Я попробовал с другим стилем представления, и это сработало.@ Cal, спасибо за твой вопрос .

1 Ответ

4 голосов
/ 12 декабря 2011

Я думаю, вам нужно явно написать [textField resignFirstResponder]; в вашем методе textFieldShouldReturn.

Если вы уже делаете это, возможно, это определенно странно. Вы можете опубликовать свой код? :)

...