UIPickerView как inputView для UITextView swift - PullRequest
0 голосов
/ 16 мая 2018

Я использовал UIPickerView в качестве inputView для UITextView. Функция selectRow: не выбирается правильно для альтернативного времени

Вот код

func textViewDidBeginEditing(_ textView: UITextView) {
    let inputView = UIView(frame: CGRect(x: 0,y: 0, width: self.view.frame.width, height: 240))
    let codePicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 240))
    codePicker.tag = 2

    if codePicker.dataSource == nil {
        codePicker.dataSource = self
    }
    if codePicker.delegate == nil {
        codePicker.delegate = self
    }

    codePicker.showsSelectionIndicator = true
    print("selectedBankRow: \(selectedRow)")
    codePicker.selectRow(selectedRow, inComponent: 0, animated: true)
    inputView.addSubview(codePicker)
    textView.inputView = inputView
    return
}

Оператор print печатает правильную строку, но функция selectRow: выбирает предыдущее или предыдущее значение, которое было выбрано, в чем может быть ошибка? Даже строка состояния становится чёрной каждый раз только для этого взаимодействия с UITextView.

1 Ответ

0 голосов
/ 16 мая 2018

Не создавать UIPickerView каждый раз

Создать глобальный объект

var codePicker = UIPickerView()

и в методе viewDidLoad

добавить следующий код

let inputView = UIView(frame: CGRect(x: 0,y: 0, width: self.view.frame.width, height: 240))
codePicker = UIPickerView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: 240))
codePicker.tag = 2
codePicker.dataSource = self
codePicker.delegate = self

codePicker.showsSelectionIndicator = true
print("selectedBankRow: \(selectedRow)")
codePicker.selectRow(selectedRow, inComponent: 0, animated: true)
inputView.addSubview(codePicker)
textView.inputView = inputView

как вы решили проблему строки состояния с

IQKeyboardManager.sharedManager().canAdjustAdditionalSafeAreaInsets = true

Надеюсь, что это полезно

...