Как заставить клавиатуру уйти в симуляторе iphone - PullRequest
20 голосов
/ 05 мая 2009

У меня есть одно поле для ввода текста в моем приложении для iphone, когда вы касаетесь его в симуляторе, появляется клавиатура. Но от этого избавиться невозможно. Другие веб-страницы дают решения, не объясняя, почему они должны работать, и они не работают для меня. Кто-то говорит, что делегат текстового поля должен сделать ваш пользовательский интерфейс, затем вызвать resignfirstresponder для объекта, но он никогда не вызывается. Какие-либо предложения? Кто-нибудь может объяснить, что на самом деле происходит? Я мог бы понять это сам, если бы я знал, какова была парадигма дизайна ...

Может быть, я должен просто поставить кнопку "Перейти", чтобы у меня было что-то, чтобы отвлечь фокус от текстового поля?

Ответы [ 3 ]

19 голосов
/ 05 мая 2009

Один из способов сделать это - установить объект в качестве делегата в текстовое поле и реализовать

- (BOOL)textFieldShouldReturn:(UITextField *)textField

в котором вы звоните [textField resignFirstResponder]

Это приведет к тому, что клавиатура исчезнет, ​​когда они нажмут кнопку возврата / перехода / готово (независимо от того, какой вы установили нижнюю правую клавишу клавиатуры).

Для получения дополнительной информации см. Ссылку UITextFieldDelegate .

16 голосов
/ 25 декабря 2010

Для отклонения клавиатуры вы можете использовать TextField Delegate.

Чтобы использовать это, выполните следующие действия ...
1. В вашем viewController. h добавьте объявление делегата следующим образом:

@interface ViewController : UIViewController <strong><code><UITextFieldDelegate></code></strong> {
    }
2. В вашем viewController. m вызовите этот метод:
- (BOOL)textFieldShouldReturn:(UITextField *)textField
3. Затем напишите такой код:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return YES;
    }
4. Последний шаг - установить делегата textField:
- (void)viewDidLoad {
        [super viewDidLoad];
        self.textField.delegate = self;
    }
5 голосов
/ 05 мая 2009

- (BOOL)textFieldShouldReturn:(UITextField *)textField в вашем делегате вызывается при нажатии кнопки возврата.

Вы хотите позвонить [textField resignFirstResponder], а затем вернуть YES. Это должно делать свое дело. Также убедитесь, что делегат установлен. Если сомневаетесь, добавьте точку останова или NSLog и подтвердите.

...