Кнопка «Готово» на клавиатуре не позволяет убрать клавиатуру - PullRequest
1 голос
/ 12 января 2011

Когда я нажимаю кнопку «Готово» на клавиатуре, она автоматически убирает клавиатуру. Как я могу остановить это от этого?

Ответы [ 3 ]

2 голосов
/ 12 января 2011

Убедитесь, что ваш контроллер представления установлен как делегат UITextField, затем реализуйте метод shouldEndEditing :.Просто верните NO, чтобы оставить текстовое поле активным и удерживайте клавиатуру на экране.

См. Документы Apple здесь .

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

2 голосов
/ 12 января 2011

Ваш контроллер должен реализовать метод textFieldShouldReturn: UITextFieldDelegate ( ссылка ):

Убедитесь, что ваш контроллер представления был установлен в качестве делегата для вашего текстового поля, либо через Interface Builder, либо в коде:

- (void) viewDidLoad
{
    self.someTextField.delegate = self;
}

Затем в вашем контроллере представления вам нужно реализовать метод textFieldShouldReturn::

- (BOOL) textFieldShouldReturn:(UITextField *)textField
{
    return NO;
}

Вы указываете, что при нажатии клавиши возврата (готово) на клавиатуре не должно быть никаких действий. Странно, как уже упоминали другие, что именно это поведение по умолчанию. Это означает, что 1) вы вызываете resignFirstResponder в своем текстовом поле или 2) это текстовое поле находится внутри UIWebView и удачи вам в изменении этого поведения.

1 голос
/ 12 января 2011

У меня была похожая ситуация.Когда произошло [myTextField resignResponder], клавиатура исчезла, но я просто хотел, чтобы клавиатура появлялась на экране.

Я просто создал один дополнительный экземпляр UITextField вне экрана, скажем, dummyTextField, и его фрейм - CGRectMake-10, -10,5,5).

И после [myTextField resignResponder] я немедленно вызвал [dummyTextField intoFirstResponder].Таким образом, клавиатура все еще жива, в то время как пользователь не может видеть dummyTextField.

Я считаю, что есть лучший способ сделать это.Но я так и сделал, и все заработало нормально.

...