UIPickerview как входное представление для uitextfield в swift показывает Клавиатуру для рабочего кода - PullRequest
0 голосов
/ 08 ноября 2019

Кто-нибудь заметил, что uitextfield-pickerview ведет себя по-разному при установке .ipa для существующего рабочего кода.

Я новичок в разработке IOS. У меня есть рабочий код с более чем 20 контроллерами представления. Где я использовал UIPickerView в качестве входного для UITextField, который заполняется при сетевом вызове. Приложение было протестировано с использованием файла .ipa, а также с помощью прямой установки через Xcode в течение нескольких итераций. Все работало нормально.

Недавно Когда я создавал новый файл .IPA, ни одно из представлений средства выбора не работало после установки. Все контроллеры представления показывали клавиатуру, когда я касался текстового поля вместо выбора вида выбора. Принимая во внимание, что та же самая сборка работает нормально, когда я непосредственно устанавливаю / запускаю из XCode для мобильных устройств.

С тех пор, как она распространялась по всему приложению, я заметил, что моя схема архивирования> Конфигурация сборки была каким-то образом установлена ​​в Release. Основываясь на некоторых ответах о переполнении стека, я обновил конфигурацию сборки архива до Debug. После того, как это создало новый файл .ipa, Все Viewcontrollers правильно показывали представления выбора, кроме одного контроллера представления. Я прочитал текстовое поле и снова установил делегат текстового поля. все равно не повезло

Я перепробовал почти все возможности.

Я полностью застрял. Не знаю, почему вдруг рабочий код не работает.

Фрагмент кода:

@ IBOutlet слабый var selectAccountTB: UITextField! ...

func textFieldDidBeginEditing(_ textField: UITextField) {
        activeTextField = textField
        self.selectedItem = ""
        if (activeTextField  == selectAccountTB ) {
        let toolBar = UIToolbar.init().addToolBarHandler(selectorDone: #selector(pickerDoneTapped), selectorCancel: #selector(pickerCancelTapped))
        self.activeTextField.isUserInteractionEnabled = true
        self.activeTextField.inputAccessoryView = toolBar
        if (self.activeTextField == self.selectAccountTB ) {
            self.activeTextField.inputView = self.accountPickerView
        }
    }

}



extension QTPViewController : UIPickerViewDelegate , UIPickerViewDataSource {
         
        func numberOfComponents(in pickerView: UIPickerView) -> Int {        return 1    }

        func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
            var count = 1
            if self.activeTextField == self.selectAccountTB {
                count = self.accountList.count
            } else if self.activeTextField == self.selectPayeeBankTB {
                count = self.payeeBankValueList.count
            }
            return count
        }
          
            func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
            var rowValue:String!
            if self.activeTextField == self.selectAccountTB
            {
                rowValue = self.accountList[row]
            } else if self.activeTextField == self.selectPayeeBankTB {
                rowValue = self.payeeBankValueList[row]
            }
            return rowValue
        }
        func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
            if self.activeTextField == self.selectAccountTB {
                if (!accountList.isEmpty) {
                    self.selectedItem = self.accountList[row]
                    print("Selected Item " , self.accountList[row])
                }
            }
        }

}

делегат текстового поля установлен в раскадровке.

Во время отладки замеченный элемент управления не приходит к textFieldDidBeginEditing () при всех неудачных сценариях i = n.

Любое направление для решения проблемы очень ценится.

...