iOS8上。选择时关闭UIPickerView单击swift

时间:2014-09-10 23:03:21

标签: ios swift uipickerview

我确实有一个填充了选择选项的UIPicker视图。我选择它们然后点击,但UIViewPicker没有关闭。如何关闭它或至少触发事件以便我可以以编程方式隐藏它?

我查看了UIPickerViewDelegate,但没有找到任何合适的方法,这些方法不会在项目选择上执行,而是在我点击所选项目时。

感谢您的帮助!

3 个答案:

答案 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];

然后:

  • (void)pickerViewTapped { //解雇选择器。 }

答案 2 :(得分:0)

在didSelectRow方法中,只需在交互结束时添加此行:

self.view.endEditing(true)