Как сделать так, чтобы UIKeyboard отображался как часть представления? - PullRequest
1 голос
/ 16 декабря 2009

Приложения Apple, такие как Почта, Контакты и SMS, заставляют UIKeyboard отображаться как часть представления. UIKeyboard скользит с представлением вместо того, чтобы появиться как отдельная анимация. Я пытался воссоздать одно и то же поведение, вызывая [myTextField becomeFirstResponder] в разных местах, таких как viewWillAppear:animated, viewDidLoad, loadView, navigationController:willShowViewController:animated:, но ничего не работает.

Я прочитал в посте (не смог найти пост сейчас), что это невозможно сделать, если вы хотите, чтобы UIKeyboard отображался с UITableView. Однако этот вывод кажется несовместимым с приложениями Apple. Кто-нибудь может подтвердить?

Есть ли решение?

Ответы [ 5 ]

2 голосов
/ 16 декабря 2009

Для какого SDK вы строите? Возможно, я ошибаюсь, но я подумал, что Apple что-то сказала об улучшении поведения отображения контроллеров представления на экране и поведения других анимаций.

Что бы это ни стоило, я начал работать над моим проектом, вызвав becomeFirstResponder в моем экземпляре UISearchBar в viewWillAppear:. Я строю против 3.1 SDK.

1 голос
/ 16 декабря 2009

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

[UIView beginAnimations:nil context:NULL];
[textFieldView setFrame:CGRectMake(0.0f, 416.0f, 320.0f, 216.0f)];
// Also resize your table view
[tableView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 372.0f)];
[UIView commitAnimations];

Затем вы можете сбросить рамки просмотра, если получите уведомление UIKeyboardWillHideNotification.

Я не выяснил точное положение кадров здесь, поэтому вам придется рассчитать это самостоятельно, но это должно дать вам основную идею. Просто подумайте о том, где вы хотите, чтобы ваши кадры были после анимации, и просто установите кадры внутри блока анимации (т.е. -beginAnimations, -commitAnimations).

С уважением.

1 голос
/ 16 декабря 2009

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

Apple Apps, очевидно, имеют доступ к расширенной функциональности клавиатуры, которую мы можем (пока) не использовать.

0 голосов
/ 17 декабря 2013

Это не частная функция Apple SDK. В iOS 7 (или любой другой версии ранее) вы можете сделать простую вещь в loadView , viewDidLoad или viewWillAppear

[yourTextView performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.0];

В этом случае клавиатура будет отображаться слева направо в соответствии с движением нажатия контроллера вида. Обратите внимание, что любой прямой вызов intoFirstResponder дает стандартную анимацию снизу, по крайней мере, в iOS 7.

0 голосов
/ 16 декабря 2009

Ответ Jablair близок, даже возвращаясь к 2.x SDK - ключом является becomeFirstResponder, но его следует вызывать в viewDidLoad. Вот еще один (ответил) СУ вопрос по теме .

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