UIPIckerView未显示在所需位置

时间:2016-06-13 09:50:28

标签: ios swift uitextfield uipickerview

我在我的Xib上放置了一个UIPickcerView。当我运行应用程序时,pickerView显示在屏幕的底部,无论我把它放在Xib上,它总是显示在屏幕的底部。

在这里你可以看到它放在屏幕上。

enter image description here

但是当我运行应用程序时,它位于底部

enter image description here

到目前为止,这是我的代码

func setupPIckerView(){
    self.pickerView.dataSource = self
    self.pickerView.delegate = self
    pickerView.removeFromSuperview()
    countryTextField.inputView = pickerView
}

// MARK: Delegate Methods

func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?
{
    return "Text"
}

// MARK: Data Source Methods

func numberOfComponentsInPickerView(colorPicker: UIPickerView) -> Int {
    return 1
}

func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return 20
}

我在这里缺少什么?

3 个答案:

答案 0 :(得分:1)

您将pickerView始终关闭,因为您已将pickerView设置为countryTextField的inputView。像这样更改你的setupPIckerView

func setupPIckerView(){
   self.pickerView.dataSource = self
   self.pickerView.delegate = self
}

添加UITextField的委托方法

func textFieldDidBeginEditing(textField: UITextField) {
    if (textField == self.countryTextField) {
        textField.inputView = UIView()
        self.pickerView.hidden = false
    }
}

func textFieldShouldReturn(textField: UITextField) -> Bool {
    if (textField == self.countryTextField) {
        self.pickerView.hidden = true
    }
    textField.resignFirstResponder()
    return true
}

希望这会对你有所帮助。

答案 1 :(得分:0)

因为您使用了textField inputView,所以textField inputView始终显示在屏幕底部。< / p>

如果您想在其他位置展示inputView,可以实施CustomView: UIView来替换inputView,然后您可以在自定义上显示该视图的位置位置。

答案 2 :(得分:0)

参考您的文本字段以编程方式设置UIpickerview框架。

pickerView.frame = CGRectMake(0,textfield.frame.origin.y+20,self.view.frame.size.width,300);
相关问题