swift初学者です。
PickerViewを使用してtextfieldにテキスト表示しているのですが、
テキストを編集することができてしまいます。
調べたところ、
override func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool { return false }
で編集できないようにできるとあったのですが、上手くできませんでした。
どのように書くと良いのか教えていただきたいです。
キーボードを表示しないやり方もあったのですが、
目指している形は、タップしたらPickerViewでのみ編集できるようすることです。
(国勢調査の選択肢のような感じです)
何卒よろしくお願いいたします。
※追記します。
上手くできなかった、と書きましたが説明不足でした。
エラーが出ることなく実行することができましたが、
テキストを編集することができる状態でした。
下記PickerViewのコードです。
override func viewDidLoad() { super.viewDidLoad() pickerView.delegate = self pickerView.dataSource = self // pickerView.showsSelectionIndicator = true let toolbar = UIToolbar(frame: CGRect(x: 0, y: 0, width: 0, height: 35)) let doneItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(WritingViewController.done)) let cancelItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(WritingViewController.reset)) toolbar.setItems([cancelItem, doneItem], animated: true) self.pickerTextField.inputView = pickerView self.pickerTextField.inputAccessoryView = toolbar } func numberOfComponents(in pickerView: UIPickerView) -> Int { return 1 } func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int { return list.count } func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? { return list[row] } func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) { self.pickerTextField.text = list[row] } @objc func reset(){ self.pickerTextField.text = "" self.pickerTextField.endEditing(true) } @objc func done() { self.pickerTextField.endEditing(true) } func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { return CGRect(x: x, y: y, width: width, height: height) }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/08 09:01