Я прочитал так много статей об этой проблеме, где экранная клавиатура отказывается прятаться, когда вы звоните resignFirstResponder
, но ни одно из предложений не помогло мне.
Я использую XCode 5 (iOS7) и иметь экран iPhone, содержащий пару элементов управления, для которых требуется экранная клавиатура, но если пользователь нажимает на UIButton
, то я хочу, чтобы клавиатура исчезла.
Я, вероятно, потратил впустую целый день, экспериментируя с resignFirstResponder
и добавляя disablesAutomaticKeyboardDismissal
функции для возврата NO, но ничего не получалось.Как только появилась экранная клавиатура, я никогда не мог заставить ее исчезнуть снова.
Но тогда у меня была небольшая мозговая волна (поскольку у меня только маленький мозг).
Теперь, когда пользователь нажимаетна моем UIButton
я просто отключаю элементы управления UITextField
и UITextView
.
- (IBAction)btnDate_Tapped:(id)sender {
// The user has clicked on the "Date" button.
self.tbClientName.enabled = NO;
self.tbComments.editable = NO;
И вдруг приложение обнаруживает, что в нем нет редактируемых текстовых полей, нуждающихся в экранной клавиатуреи аккуратно выдвигает клавиатуру из поля зрения.
(С облегчением вздохнул).
My UIButton
на самом деле вызывает всплывающее диалоговое окно.Когда пользователь закрывает всплывающее окно, я снова включаю эти два элемента управления, поэтому, если пользователь нажимает на один из них, клавиатура снова появляется.
-(void)popoverControllerDidDismissPopover:(UIPopoverController *) popoverController {
// The user has closed our popup dialog.
// We need to make our UITextField and UITextView editable again.
self.tbClientName.enabled = YES;
self.tbComments.editable = YES;
... etc...
}
Просто, не правда ли!
И, что удивительно, этот обходной путь работает даже на UIViewControllers
, который появляется в Модальном стиле.
Я надеюсь, что это поможет другим жертвам XCode там.