我的问题是: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。
更新:
看,我知道使用textField Delegates,我们可以实现这一点。但是我找到了inputView
的{{1}}属性,我发现它非常有趣,因为你必须将它指定为:
UITextField
但我在textField.inputView = pickerView;
内有UIPickerView
。那么如何使用PopOver
的{{1}}?
任何更好的主意?...
答案 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: - 你还可以在这里隐藏选择器..
希望这会有所帮助。