编辑:好的,这很奇怪......经过大量的调试后,我发现虽然文本字段正在重新响应第一响应者状态(我可以看到任何一个都没有闪烁的条),键盘是不要下来!也许这值得一个不同的问题。
我在自定义uiviewcontroller子类中有几个文本字段,它们显示在弹出窗口中。弹出窗口显示为条形按钮。当弹出窗口被解除时,我希望键盘关闭(通过用户再次点击条形按钮,或者点击弹出窗口外部。从显示弹出窗口的视图控制器,当弹出窗口被解除时,以2种方式中的任何一种方式,我打电话给
[optionsController dismissFirstResponder];
Optionscontroller是popover中的uiviewcontroller子类。 Dismissfirstresponder是我定义的方法:
-(void)dsimissFirstResponder {
[nameField resignFirstResponder];
[descriptionField resignFirstResponder];
[helpField resignFirstResponder];
}
这是我在xib中连接到文本字段的三个IBoutlet。
这不起作用。对此的任何帮助将不胜感激。
代码被称为: [optionsController dismissFirstResponder]; [poppoverController dismissPopoverAnimated];
我在dismissFirstResponder中设置了一个断点,并在我预期的时候调用它。我也检查过,在该函数调用期间,所有三个IBOutlet都是非零的。这些是整个应用程序中唯一的文本字段,因此我不确定如何放下键盘。
答案 0 :(得分:0)
您需要接收弹出窗口的委托方法回调。你看过UIPopoverControllerDelegate的文档了吗?定义了以下方法:
当你的用户做任何手势来解除弹出窗口(点击外部等)时,应该调用它们,假设你已经为你的popover设置了一个委托,并且你已经在该委托中实现了这个正式的协议。当--popoverControllerDidDismissPopover:被调用时,你可以在那时调用控件上的-resignFirstResponder。
// In your popover delegate
- (void)popoverControllerDidDismissPopover:
(UIPopoverController *)popoverController
{
[nameField resignFirstResponder];
[descriptionField resignFirstResponder];
[helpField resignFirstResponder];
}