Проблема с отображением / скрытием клавиатуры в приложении iPhone - PullRequest
4 голосов
/ 01 апреля 2011

В моем приложении для iPhone я столкнулся с некоторыми проблемами, связанными с поведением отображения / скрытия клавиатуры.

У меня есть три текстовых поля; при щелчке по третьему текстовому полю я хочу отобразить UIPickerView и скрыть клавиатуру для этого текстового поля. Что я могу сделать.

Теперь проблема в том, что, если клавиатура первого или второго текстового поля видна, и я нажимаю на третье текстовое поле, средство выбора становится видимым, но оно появляется за клавиатурой (это только позади первое или второе текстовое поле).

Так, что я должен сделать, чтобы выбрать маркер отдельно и не показывать клавиатуру в то время?

Вот код: -

- (void) textFieldDidBeginEditing: (UITextField *) textField {

if (textField==thirdTextField) {

    [scroll setFrame:CGRectMake(00, 48, 320, 160)];
    [scroll setContentSize:CGSizeMake(320,335)];        
    [picker setHidden:NO];
    [tool1 setFrame:CGRectMake(0,180,320,44)];
    [tool1 setHidden:NO];
    [self.picker reloadAllComponents];

    [firtTextField resignFirstResponder];
    [secondTextField resignFirstResponder];
    [thirdTextField resignFirstResponder];
    }
else {  
      [scroll setFrame:CGRectMake(00, 48, 320, 200)];
      [scroll setContentSize:CGSizeMake(320,335)];
      [tool1 setHidden:NO];
      [tool1 setFrame:CGRectMake(0,220,320,44)];
}
}

проблема как

enter image description here

Ответы [ 5 ]

7 голосов
/ 01 апреля 2011

Оставьте три текстовых поля в качестве элемента контроллера.

- (void)textFieldDidBeginEditing:(UITextField *)textField { 
  if(textField == 3rdTextField){
    [self.firstTextField resignFirstResponder];
    [self.secondTextField resignFirstResponder];
    [self.thirdTextField resignFirstResponder];
  }
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
        if(textField==3rdTextField){
            [firstTextField resignFirstResponder];
            [secondTextField resignFirstResponder];
         }
        else if(textField==secondTextField){
            [firstTextField resignFirstResponder];
            [3rdTextField resignFirstResponder];
         }
        else if(textField==firstTextField){
            [secondTextField resignFirstResponder];
            [3rdTextField resignFirstResponder];
         }

       return YES;
 }

Надеюсь, это поможет вам.

3 голосов
/ 01 апреля 2011

Звоните

[yourTextField resignFirstResponder]

во всех других текстовых полях, чтобы их клавиатура исчезла.

1 голос
/ 01 апреля 2011

Затем используйте Уведомление, когда клавиатура станет видимой, и используйте логическое значение isPickerVisible.
Когда средство выбора станет видимым, установите для isPickerVisible значение ИСТИНА.
В методе keyboardDidShow проверьте, является ли средство выбора видимым или нет. Если это видно, то скрыть это.
Добавление уведомления:

[[NSNotificationCenter defaultCenter] addObserver:self<br>
                                        selector:@selector(keyboardDidShow:)<br>
                                           name:UIKeyboardWillShowNotification<br>
                                          object:nil];<br>
И метод ...
- (void)keyboardDidShow:(NSNotification*)notif {
    if(isPickerVisible) {
        [self hidePicker];
    }   
}

Надеюсь, это помогло ...

1 голос
/ 01 апреля 2011

используйте методы resignFirstResponder и текстовые поля. [textField resignFirstResponder], что скроет клавиатуру.

0 голосов
/ 01 апреля 2011

In - (BOOL) textFieldShouldBeginEditing: (UITextField *) Метод textField использует resignFirstResponder для всего текстового поля, кроме третьего textFied: -

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
        if(textField==thirdTextField)
        {
            [firstTextField resignFirstResponder];
            [secondTextField resignFirstResponder];
            [textField resignFirstResponder];

            [self showPickerView];
         }
       return YES;
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...