2016-06-13 6 views
0

私はUIPickcerViewを自分のXibに配置しました。私がアプリを動かすと、画面の一番下には常にXib上に配置されていても、画面の一番下にPickerViewが表示されます。UIPIckerViewが希望の場所に表示されません

ここでは、画面の上部に配置されているのがわかります。ここで

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 
} 

私はここで何をしないのですか?

+0

代案をお礼ありがとうございます。しかし、私はUIPIckerViewを使いたいと思います。 UIPickerViewでこの問題を解決することは可能ですか? –

+0

UIPickcerViewのフレームをプログラム的に変更しようとしましたか? – Raghav

答えて

1

countryTextFieldのinputViewとしてpickerViewを設定しているため、pickerViewが常に停止しています。あなたの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 
} 

のように変更しますが、これはあなたを助けることを願っています。

+0

しかし、私はユーザーが私のtextFieldをタップするときにそれを提示したい。入力のためのその種の選択。ユーザはcoutriesのリストを提示され、ユーザはそこから国を選択することができる。 –

+0

次に、ピッカービューを非表示にする必要があります。 –

+0

お願いします。 –

0

textFieldinputViewを使用したため、textFieldinputViewは常に画面の下部に表示されます。

他の場所にinputViewを表示する場合は、inputViewの代わりにCustomView: UIViewを実装して、カスタムロケーションに表示することができます。

0

テキストフィールドを参照して、プログラムによってUIpickerviewフレームを設定します。

pickerView.frame = CGRectMake(0,textfield.frame.origin.y+20,self.view.frame.size.width,300); 
関連する問題