1

Я создание УВЕДОМЛЕНИЯ получить КЛАВИАТУРЫ информации, чтобы настроить представление таким образом, что выбранное текстовое поле не охватывается КЛАВИАТУРЫ.В iOS, как мне получить информацию о клавиатуре, чтобы предотвратить наложение текстовых полей на клавиатуру?

@property CGSize keyboard; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view from its nib. 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(keyboardWillShow:) 
               name:@"UIKeyboardWillShowNotification" 
               object:nil]; 
    ... 
} 

- (void) keyboardWillShow:(NSNotification *)note 
{ 
    NSDictionary *userInfo = [note userInfo]; 
    self.keyboard = [[userInfo objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
} 

Я настроил UITextFieldDelegate так что я могу использовать КЛАВИАТУРУ информацию в

- (void)textFieldDidBeginEditing:(UITextField *)textField 

Все работает отлично ...

в первый раз, за ​​исключением.

УВЕДОМЛЕНИЯ, который устанавливает КЛАВИАТУРЫ свойства называется после textFieldDidBeginEditing поэтому очень первый раз КЛАВИАТУРЫ свойства не было установлено так, что отображается неправильно.

После этого все в порядке, так как свойство KEYBOARD уже настроено и значения не меняются.

Как я могу получить КЛАВИАТУРУ информации перед первым исполнением textFieldDidBeginEditing?

EDIT:

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

- (void)viewWillAppear:(BOOL)animated 
{ 
    [super viewWillAppear:animated]; 
    [self.txtField becomeFirstResponder]; 
} 

- (void)viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:animated]; 
    [self.txtField resignFirstResponder]; 
} 

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

я должен разбить becomeFirstResponder и resignFirstResponder в различные методы, потому что если они вызываются из той же методы, то keyboardWillShow не дозвонился.

Кроме того, не может разместить becomeFirstResponder в viewDidLoad потому keyboardWillShow не вызывается в этой ситуации тоже.

Если у кого-то есть улучшение или лучший способ, я бы хотел его услышать.

ответ

1

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