Поддерживается ли UITextField + UIPickerView в Ma c Catalyst? - PullRequest
2 голосов
/ 07 февраля 2020

В моем приложении iOS у меня есть текстовое поле с представлением выбора, назначенным для его inputView. На устройствах iOS окно выбора появляется при каждом нажатии пользователем текстового поля. Однако тот же код не делает этого, когда я запускаю его как приложение Mac / Catalyst. Мои попытки отладки пока показывают, что методы представления средства выбора вообще не вызываются, поэтому, если Ma c требует дополнительных методов делегирования текстового поля, чтобы отвлечь внимание от клавиатуры Ma c? Есть идеи, как заставить это работать на Ма c? Пример кода для barebones приведен ниже.

class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource, UITextFieldDelegate {
@IBOutlet weak var myTextField: UITextField!

var myPickerView : UIPickerView!
var pickerData = ["Alpha" , "Bravo" , "Charlie" , "Delta"]

override func viewDidLoad() {
    super.viewDidLoad()

    self.myPickerView = UIPickerView(frame:CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 300))
    self.myPickerView.delegate = self
    self.myPickerView.dataSource = self

    self.myTextField.delegate = self
    self.myTextField.inputView = self.myPickerView

}

func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerData.count
 }
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return pickerData[row]
}
}

1 Ответ

1 голос
/ 20 февраля 2020

Похоже, ошибка в Ма c Катализатор. Попробуйте использовать UIPicker, встроенный в UIActionSheet. ActionSheetPicker-3.0 - это готовое решение. Покажите ActionSheetPicker в textFieldDidBeginEditing вашего UITextField.

...