我确实有一个填充了选择选项的UIPicker视图。我选择它们然后点击,但UIViewPicker
没有关闭。如何关闭它或至少触发事件以便我可以以编程方式隐藏它?
我查看了UIPickerViewDelegate
,但没有找到任何合适的方法,这些方法不会在项目选择上执行,而是在我点击所选项目时。
感谢您的帮助!
答案 0 :(得分:1)
一旦用户使用textFieldDidBeginEditing函数单击文本字段,您就可以看到选择器,然后使用didSelectRow函数隐藏...
func textFieldDidBeginEditing(textField: UITextField) {
myPicker.hidden = false
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
myTextField.text = myPicker[row]
myPicker.hidden = true
}
我还建议您添加touchesBegan函数,以便在用户触摸选择器视图之外的任何屏幕部分时隐藏它。
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
myPicker.hidden = true
}
我当然假设您已完成所有必需的dataSource并为UIPickerView委派链接和函数...
答案 1 :(得分:0)
使用UIPickerView的委托方法,如下所示..
(void)pickerView:(UIPickerView *)thePickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {
yourTextField.text = [yourArray objectAtIndex:row];
thePickerView.hidden = YES;
}
<强>更新强>
您可以将UITapGestureRecognizer添加到UIPickerView:
UITapGestureRecognizer * tapGR = [UITapGestureRecognizer alloc] initWithTarget:self 动作:@selector(pickerViewTapped]; [pickerView addGestureRecognizer:tapGR];
然后:
答案 2 :(得分:0)
在didSelectRow方法中,只需在交互结束时添加此行:
self.view.endEditing(true)