Ok można to zrobić za pomocą UITextField
Krok 01: -
Dodaj UITextField.Select wsiąść stylu niewidoczny i ustawić kolor odcień biały/jasny kolor.
Etap 02: -
Następnie dodać UIButton na górze UITextField dodać taką samą wysokość i szerokość jest hierarchia constraints.Here płyta Stroy,
Krok 03: -
Następnie podłącz przycisk i TextField do tej funkcji klasę: -
przycisk Connect na tym jednym @IBAction FUNC (Sender: AnyObject) i podłączyć do @IBAction UITextField funk textField (Nadawca: UITextField).
import UIKit
class ViewController: UIViewController, UITextFieldDelegate, UIPickerViewDataSource, UIPickerViewDelegate {
@IBOutlet weak var textFeild: UITextField!
let picker_values = ["val 1", "val 2", "val 3", "val 4"]
var myPicker: UIPickerView! = UIPickerView()
override func viewDidLoad() {
super.viewDidLoad()
self.myPicker = UIPickerView(frame: CGRectMake(0, 40, 0, 0))
self.textFeild.delegate = self
self.myPicker.delegate = self
self.myPicker.dataSource = self
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//MARK: - Delegates and data sources
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return picker_values.count
}
//MARK: Delegates
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return picker_values[row]
}
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
//Your Function
print("Hello")
}
@IBAction func button(sender: AnyObject) {
self.textFeild.becomeFirstResponder()
}
func cancelPicker(sender:UIButton) {
//Remove view when select cancel
self.textFeild.resignFirstResponder() // To resign the inputView on clicking done.
}
@IBAction func textField(sender: UITextField) {
//Create the view
let tintColor: UIColor = UIColor(red: 101.0/255.0, green: 98.0/255.0, blue: 164.0/255.0, alpha: 1.0)
let inputView = UIView(frame: CGRectMake(0, 0, self.view.frame.width, 240))
myPicker.tintColor = tintColor
myPicker.center.x = inputView.center.x
inputView.addSubview(myPicker) // add date picker to UIView
let doneButton = UIButton(frame: CGRectMake(100/2, 0, 100, 50))
doneButton.setTitle("Done", forState: UIControlState.Normal)
doneButton.setTitle("Done", forState: UIControlState.Highlighted)
doneButton.setTitleColor(tintColor, forState: UIControlState.Normal)
doneButton.setTitleColor(tintColor, forState: UIControlState.Highlighted)
inputView.addSubview(doneButton) // add Button to UIView
doneButton.addTarget(self, action: "doneButton:", forControlEvents: UIControlEvents.TouchUpInside) // set button click event
let cancelButton = UIButton(frame: CGRectMake((self.view.frame.size.width - 3*(100/2)), 0, 100, 50))
cancelButton.setTitle("Cancel", forState: UIControlState.Normal)
cancelButton.setTitle("Cancel", forState: UIControlState.Highlighted)
cancelButton.setTitleColor(tintColor, forState: UIControlState.Normal)
cancelButton.setTitleColor(tintColor, forState: UIControlState.Highlighted)
inputView.addSubview(cancelButton) // add Button to UIView
cancelButton.addTarget(self, action: "cancelPicker:", forControlEvents: UIControlEvents.TouchUpInside) // set button click event
sender.inputView = inputView
}
}
Przy okazji upewnić się, że UITextField wysłał zdarzenie jest "Edit zaczęła" Jak to: -
nadzieję, że to będzie pomóc ...
pracował dla mnie! –