【问题标题】:How can I dismiss keyboard in iPhone OS 3.2 with text field in popover?如何在 iPhone OS 3.2 中使用弹出窗口中的文本字段关闭键盘?
【发布时间】:2011-02-28 03:09:46
【问题描述】:

编辑:好的,这很奇怪......经过大量调试后,我发现虽然文本字段正在退出第一响应者状态(我可以看到任何地方都不再有闪烁的条),但键盘是不会下降!也许这值得一个不同的问题。

我在自定义 uiviewcontroller 子类中有几个文本字段,它们显示在弹出框内。弹出框以条形按钮显示。我希望键盘在弹出框被关闭时关闭(通过用户再次点击栏按钮,或在弹出框外部点击。从显示弹出框的视图控制器中,当弹出框被关闭时,以两种方式中的任何一种,我叫

[optionsController dismissFirstResponder];

Optionscontroller 是弹出框中的 uiviewcontroller 子类。 Dismissfirstresponder 是我定义的一个方法:

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

}

这些是我在 xib 中连接到文本字段的三个 IBoutlet。

这行不通。对此的任何帮助将不胜感激。

代码是这样调用的: [optionsControllerdismissFirstResponder]; [poppoverControllerdismissPopoverAnimated];

我在dismissFirstResponder 中设置了一个断点,它在我预期的时候被调用。我还检查了,在该函数调用期间,所有三个 IBOutlets 都不为零。这些是整个应用程序中唯一的文本字段,所以我不确定如何放下键盘。

【问题讨论】:

  • 你的代码被调用了吗? “dsimissFirstResponder”中有一个类型。你会在弹出框真正关闭之前调用它吗?
  • 我只是在 [name point...问题已编辑。

标签: iphone cocoa-touch keyboard uitextfield


【解决方案1】:

您需要接收弹出框的委托方法回调。您查看过UIPopoverControllerDelegate 的文档吗?定义了以下方法:

  • -popoverControllerShouldDismissPopover:
  • -popoverControllerDidDismissPopover:

假设您已经为弹出框设置了一个委托并且您已经在该委托中实现了这个正式协议,那么当您的用户执行任何手势来关闭弹出框(点击外部等)时,应该调用这些。当 – popoverControllerDidDismissPopover: 被调用时,您可以在此时在您的控件上调用 -resignFirstResponder。

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

【讨论】:

  • Ahhh...我忘记了您可以将代理分配为任何对象...我将显示在弹出框内的视图控制器子类分配为弹出框的代理,并执行以下操作你说当我回到我的项目时,看看它是否有效。
  • 那么你找到答案了吗?我有同样的问题:/
猜你喜欢
  • 1970-01-01
  • 2014-05-29
  • 2020-11-14
  • 2011-02-08
  • 2018-12-31
  • 1970-01-01
  • 2015-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多