ios隐藏键盘

时间:2013-01-29 09:19:12

标签: iphone keyboard uitextfield uipickerview uipopovercontroller

我的问题是:What is the best way to implement "Hiding Keyboard while PickerView (which is inside the PopOver) is Visible"?

我想要的:

我有一个大约15 TextFields的视图。在15个中,比方说7使用UIPickerView(驻留在UIPopOverController中)来实现DropDown Functionality。我的问题是当KeyBoard可见并且我点击UITextField UIPickerView时,KeyBoard没有隐藏。实现这个的最佳方法是什么?

我尝试过的事情:

我尝试实施inputView,但我只在UIPickerView UIPickerView内使用UIPopOverController。我认为这就是我无法使用inputView财产的原因。根据这个Question,这是来自Apple的Bug。

更新

看,我知道使用te​​xtField Delegates,我们可以实现这一点。但是我找到了inputView的{​​{1}}属性,我发现它非常有趣,因为你必须将它指定为:

UITextField

但我在textField.inputView = pickerView; 内有UIPickerView。那么如何使用PopOver的{​​{1}}?

任何更好的主意?...

2 个答案:

答案 0 :(得分:0)

将.h文件中的对象作为:

id currentTextField;

在.m文件中实施此UITextField Delegate方法:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    currentTextField = textField;
}
  • 不要忘记为文件中的所有txtField.delegate = self制作UITextFields

现在当您收到pickerView按钮上的点击时,首先在该按钮的点击方法上添加一条声明:

[currentTextField resignFirstResponder];

一切顺利!!!

答案 1 :(得分:0)

我猜你不能直接这样做(inputView)。您可以尝试这个简单的工作:

1)将UITextField替换为UIButton并将其连接到某个选择器(buttonClicked :)。您可以使用UIButtonTypeCustom来设置样式,使其看起来像文本字段(设置图层的bordeColor,borderWidth,cornerRadius等)。

2)在此方法中-(void)buttonClicked:(id)sender - 切换用于替换UIPickerView的inputView的UITextField。你可以在普通的实例变量中做,只记得设置delegate和dataSource。将其附加到根视图(弹出窗口中的UIViewController节目)或甚至是UIWindow,并根据它是否已经显示,将其设置为动画或输出动画(切换)。

3)在[button setTitle:<selected_value> forState:UIControlStateNormal]方法中更新按钮的文本(使用UIPickerViewDelegate):`pickerView:didSelect ... atIndex: - 你还可以在这里隐藏选择器..

希望这会有所帮助。