Как я могу отклонить клавиатуру в iPhone OS 3.2 с текстовым полем в popover? - PullRequest
1 голос
/ 05 июня 2010

Редактировать: Хорошо, это странно ... После обширной отладки я обнаружил, что, хотя текстовые поля переставали статус первого респондента (я вижу, что больше нет мигающей полосы), клавиатура НЕ УХОДИТ! Может быть, это заслуживает другого вопроса.

У меня есть несколько текстовых полей в пользовательском подклассе uiviewcontroller, который отображается во всплывающем окне. Всплывающее окно отображается в виде кнопки панели. Я хочу, чтобы клавиатура выключалась, когда всплывающее окно отклонено (либо пользователем, снова нажимающим кнопку панели, либо нажатием за пределами всплывающего окна. Из контроллера представления, который отображает всплывающее окно, когда всплывающее окно отклонено, в любой из двух мод Я звоню

[optionsController dismissFirstResponder];

Optionscontroller - это подкласс uiviewcontroller в поповере. Увольнение - это метод, который я определил:

-(void)dsimissFirstResponder {
[nameField resignFirstResponder];
[descriptionField resignFirstResponder];
[helpField resignFirstResponder];

}

Это три IBoutlets, которые я подключил в xib к текстовым полям.

Это не работает. Любая помощь с этим будет принята с благодарностью.

Код называется так: [optionsController dismissFirstResponder]; [poppoverController dismissPopoverAnimated];

Я установил точку останова в dismissFirstResponder, и она вызывается, когда я ожидал, что она будет. Я также проверил, и все три IBOutlets не равны нулю во время этого вызова функции. Это единственные текстовые поля во всем приложении, поэтому я не уверен, как еще можно положить клавиатуру вниз.

1 Ответ

0 голосов
/ 05 июня 2010

Вам нужно получить ответные вызовы метода делегата для всплывающего окна. Вы смотрели документы для UIPopoverControllerDelegate ? Определены следующие методы:

  • -popoverControllerShouldDismissPopover:
  • -popoverControllerDidDismissPopover:

Они должны вызываться, когда ваш пользователь делает какой-либо жест, чтобы отклонить всплывающее окно (постукивание снаружи и т. Д.), Предполагая, что вы установили делегата для своего поповера и внедрили этот формальный протокол в этом делегате. Когда вызывается - popoverControllerDidDismissPopover: вы можете просто вызвать -resignFirstResponder для своих элементов управления в этой точке.

// In your popover delegate
- (void)popoverControllerDidDismissPopover:
                     (UIPopoverController *)popoverController
{
  [nameField resignFirstResponder];
  [descriptionField resignFirstResponder];
  [helpField resignFirstResponder];
}
...