Как я могу скрыть приложение клавиатуры iPhone - PullRequest
2 голосов
/ 08 июля 2011

Как я могу скрыть клавиатуру после того, как пользователь нажал «Done» или нажал на UITextField?

Я поместил этот код в AppDelegate:

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

И я связалделегат UITextField в IB Владельцу файла ..

Что я делаю не так?

РЕДАКТИРОВАТЬ: Изменение возврата NO -> return YES ничего не делает.У меня открыт IB, и я щелкаю по владельцу файла -> вкладка «Соединения», есть несколько ссылок, все из которых указывают на поля UIText.Он по-прежнему не работает ..

ОБНОВЛЕНИЕ:

Я добавил это в свою функцию:

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    int i = 5;
    NSLog(@"%d", i);
    return YES;
}

Ничего не выводится на консоль, когда я нажимаю клавишу возврата послеустановка фокуса на текстовое поле ... Так что это не вызов функции.Я подключил что-то неправильно?У меня есть ключ возврата, действующий как «Готово», не уверен, что это имеет значение?

ОБНОВЛЕНИЕ:

У меня была функция testfieldShouldReturn в моем AppDelegate вместо моего viewcontroller.Моя ошибка .... Спасибо за вашу помощь, ребята

Ответы [ 6 ]

1 голос
/ 09 июля 2011

Просто установите делегата вашего приложения в качестве делегата вашего UITextField.

[textField setDelegate:self];

Установите его в методе -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions; вашего приложения-делегата.

1 голос
/ 08 июля 2011

Ваш код выглядит хорошо. Можете ли вы убедиться, что у вас правильно настроено делегатское соединение? Попробуйте добавить NSLog в метод делегата, чтобы увидеть, вызывается ли он вообще.

...

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

0 голосов
/ 09 июля 2011

Надеюсь, что этот видеоурок поможет вам ..

http://www.thenewboston.com/?p=1368&pOpen=tutorial

Вызовите эту функцию textFieldShouldReturn при нажатии клавиши.* 1) щелкните правой кнопкой мыши текстовое поле, из которого выскакивает клавиатура.2) Выберите первую опцию «Закончился ли при выходе».3) Перетащите синюю линию владельцу файла, и у вас будет возможность выбрать опцию «hideKeyboard»

И все готово.

0 голосов
/ 09 июля 2011

В твоем .ч

-(IBAction)hideKeyboard:(id)sender;

В вашем .m или .mm

-(IBAction)hideKeyboard:(id)sender {
    [(UITextField*)sender resignFirstResponder];
}

Затем просто свяжите их в Интерфейсном конструкторе с событием «Сделал конец при выходе» вашего текстового поля.

0 голосов
/ 08 июля 2011

Так как вы хотите, чтобы текстовое поле возвращалось.Вы должны return YES; вместо NO.

0 голосов
/ 08 июля 2011

Заменить return NO; на return YES;.

Это работает в моем коде.

РЕДАКТИРОВАТЬ: я был не прав. Возвращаемое значение не является проблемой здесь. Клавиатура должна прятаться, когда вы звоните resignFirstResponder.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...