4

我的问题是: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. 我的问题是当键盘可见并且我单击UITextFieldwith 时UIPickerView,键盘没有隐藏。实现这一点的最佳方法是什么?

我尝试了什么:

我试图实现inputView,但它只用于UIPickerView我在UIPickerView里面的时候UIPopOverController。我认为这就是我无法使用inputView财产的原因。根据这个问题,它是来自 Apple 的错误。

更新

看,我知道使用 textField Delegates ,我们可以实现这一点。但是我发现inputView了 of 的属性,UITextField并且发现它非常有趣,因为您必须将其分配为:

textField.inputView = pickerView;

但我有UIPickerView内在PopOver。那么如何使用这个inputView propertyUITextField

有更好的主意吗?...

4

2 回答 2

0

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

id currentTextField;

UITextField Delegate在您的 .m 文件中实现此方法:

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

现在,当您收到对pickerViewButton 的点击时,首先在该按钮的 click 方法上添加一条语句:

[currentTextField resignFirstResponder];

祝一切顺利!!!

于 2013-01-29T09:55:33.140 回答
0

我猜你不能直接这样做(as inputView)。您可以尝试这个简单的解决方法:

1)替换你UITextFieldUIButton并将其连接到一些选择器(buttonClicked:)。您可以使用UIButtonTypeCustom它来设置样式,使其看起来像文本字段(设置图层的边框颜色、边框宽度、角半径等。)

2)在这种方法-(void)buttonClicked:(id)sender中 - 切换UIPickerView您将用作 inputView 的相同替换UITextField。您可以在普通实例变量中创建,只需记住设置委托和数据源。将它附加到根视图(UIViewController在弹出窗口中显示的),或者甚至UIWindow根据它是否已经显示而对其进行动画处理(切换)。

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

希望这会有所帮助。

于 2013-01-29T10:45:02.657 回答