2015-09-22 7 views
-1

У меня есть форма с текстовым полем на моем контроллере view. Когда пользователь прикасается к текстовому полю для добавления своего состояния, я показываю UIPicker для их выбора. Проблема в том, что клавиатура отображается в предыдущем текстовом поле, и я не могу ее уволить. Вот мой код:iOS Keyboard не увольняет

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

    if (self.currentTextField) { 
     self.currentTextField = nil; 
     self.currentTextField = (KIP_TextField*)textField; 
    } else { 
     self.currentTextField = (KIP_TextField*)textField; 
    } 


    if (self.currentTextField.tag == 0 || self.currentTextField.tag == self.arrSearchFields.count-1) { 

     //kill the editing 
     [self.view endEditing:YES]; 
     [self.currentTextField resignFirstResponder]; 

     //set the picker type 
     if (self.currentTextField.tag == 0) { 
      self.currentPickerType = SUPPLIER_PICKER; 
     } else if (self.currentTextField.tag == self.arrSearchFields.count-1) { 
      self.currentPickerType = STATE_PICKER; 
     } 

     if (!self.hasPicker) { 
      [self addPicker]; 
     } else { 
      [self closePicker:YES]; 
     } 

    } else { 
     [self closePicker:NO]; 
    } 

} 

Для тех, кто ответил resignFirstResponder: У меня есть, что и она работает, но мне нужно на клавиатуре, чтобы быть освобожден, когда я отображая сборщика. Таким образом, есть 3 текстовых поля, TF1, TF2, TF3, для TF1 и 2, прикосновение к ним запускает сборщик, когда пользователь выбирает строку выбора, текстовое поле заполняется этим значением, а сборщик отклоняется. Однако, если вы сначала перейдете в TF2, отобразится клавиатура, вы можете отклонить ее с помощью ключа возврата или texfieldDidEndEditing, который отклонит его. Но скажите, что вы не вводите текст, но касаетесь TF1 или 3, теперь отображается панель выбора, но клавиатура все еще находится на экране. Я не могу его уволить, даже с self.view endEditing

+0

Если вы хотите проголосовать, по крайней мере, оставьте комментарий. – PruitIgoe

+0

Это решило мою проблему: http: //stackoverflow.com/questions/22331963/hide-keyboard-in-objective-c – PruitIgoe

ответ

0

Используйте следующий метод делегата UITextView при попытке закрыть клавиатуру:

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

Убедитесь, что добавить делегат

emailTextField.delegate = self 

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

0

Вы можете использовать метод делегата textFieldShouldReturn:

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

ИЛИ

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

[[self view] endEditing:YES];