Клавиатура не исчезает, когда я нажимаю «Готово» на iPhone - PullRequest
1 голос
/ 11 июля 2009

Я пытаюсь реализовать приложение Hello World для iPhone, и я работал над некоторыми из них. Однако я не могу понять, как заставить клавиатуру уйти. Я видел это , и нет, это не помогает (у меня есть resignFirstResponder в моем коде). Я подключил соответствующее текстовое поле к владельцу файла в качестве делегата. Вот код, который определяет, должна ли клавиатура исчезать:

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

Я уверен, что это должно быть смехотворно очевидно, но я не могу найти ответ. Заранее спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 11 июля 2009

Прежде всего, просто чтобы уточнить: вы должны подключить делегат текстового поля к владельцу файла, а не делегат владельца файла к текстовому полю. Это может показаться странным, но вы можете легко проверить это, выбрав текстовое поле в Интерфейсном Разработчике и проверив, что его «делегирующие» точки подключения находятся у владельца файла.

Далее, что произойдет, если вы уберете оператор if в своем коде? Свяжите делегата текстового поля с владельцем файла, а затем измените код на:

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

должен дать желаемый результат.

Если это все еще не работает, убедитесь, что класс владельца файла совпадает с классом, в котором реализован этот метод. Например, если код находится в RootViewController.m, то вы хотите указать, что файл owner - это экземпляр RootViewController в Интерфейсном Разработчике.

0 голосов
/ 20 июля 2009

ваш код

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

является своего рода провалом.

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

- (BOOL)textFieldShouldReturn:(UITextField *)theTextField {
    if (theTextField == [self textField]) {
        [theTextField resignFirstResponder];
    }
    return YES;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...