Закрыть клавиатуру на симуляторе iPhone - PullRequest
0 голосов
/ 27 декабря 2011

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

Вот мой заголовочный файл:

@interface Login : UIViewController{
RootViewController *rootViewController;
IBOutlet UITextField *usernameField;
IBOutlet UITextField *passwordField;
IBOutlet UIButton *loginButton;
}
@property (nonatomic, retain) UITextField *usernameField;
@property (nonatomic, retain) UITextField *passwordField;
@property (nonatomic, retain) UIButton *loginButton;
@property (nonatomic, retain) RootViewController *rootViewController;
- (IBAction) login: (id) sender;

@end

Единственный способ, которым я нашел это, был что-то вроде:

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
{
[textField resignFirstResponder]; 
return YES; 
} 
- (void)loadView 
{ 
self.view = contentView; 
[contentView release]; 
// Create a field with a Done return key 
usernameField = [[[UITextField alloc] initWithFrame:CGRectMake(120.0f, 40.0f, 150.0f, 30.0f)] retain]; 
[usernameField setBorderStyle:UITextBorderStyleRoundedRect]; 
usernameField.placeholder = @"name"; 
usernameField.returnKeyType = UIReturnKeyDone; 
usernameField.clearButtonMode = UITextFieldViewModeWhileEditing; 
usernameField.delegate = self; 
[contentView addSubview:usernameField]; 
[usernameField release]; 
} 

Какие программы видят и добавляют поля. Есть ли способ обойти это?

Ответы [ 4 ]

2 голосов
/ 28 декабря 2011

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

Если вы хотите скрыть клавиатуру, когда пользователь нажимает за пределами текстового поля, вы можете добавить UIGestureRecognizer в представление. При обнаружении касания вы можете указать активному текстовому полю resignFirstResponder.

1 голос
/ 27 декабря 2011

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

0 голосов
/ 28 декабря 2011

Поместите все в представление прокрутки, и когда клавиатура сначала отвечает, добавьте высоту клавиатуры к высоте представления прокрутки.Сделайте обратное, когда клавиатура исчезнет.

0 голосов
/ 28 декабря 2011

Другой подход заключается в создании InputAccessoryView для UITextField с кнопкой «Готово», которая отменяет нажатие клавиатуры при нажатии.

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