Заполнитель UITextField отображается с тенью позади UITextField.text при программной настройке текста.Зачем? - PullRequest
0 голосов
/ 01 мая 2019

Я устанавливаю UITextField текст заполнителя, используя:

textField.placeholder = "placeholder"

Затем, так как я использую UIPickerView в качестве моего inputView, когда выбран элемент просмотра средства выбора, я обновляю placeholder, выполняя textField.placeholder = nil и делая textField.text = "pickerViewValue". Но заполнитель не очищается, и за текстом появляется небольшая тень, как показано ниже:

https://imgur.com/a/sMHvEje

(Вы должны посмотреть очень близко, чтобы увидеть это. Вы увидите, что надпись «Размер» очень слабо скрывается за темным L).

Я пытался установить текст и attributedText в качестве заполнителей вместо использования свойства заполнителя, но всякий раз, когда я делаю это, первое значение, установленное либо для текста, либо attributedText, остается в фоновом режиме, как текст заполнителя. , Я попытался установить все эти атрибуты на ноль и "". Нет кости. Хотите знать, если у кого-то была подобная проблема.

Возникли проблемы с форматированием кода, поэтому вот код для вставки:

https://pastebin.com/pqmtaBeG

Важные вещи находятся в конфигурации, updatePickerViews и extensions ProductView

let toolBar = UIToolbar()
  toolBar.barStyle = .default
  toolBar.isTranslucent = true
  toolBar.tintColor = globalAppleBlue
  toolBar.sizeToFit()

  let spaceButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonItem.SystemItem.flexibleSpace, target: nil, action: nil)

  let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItem.Style.plain, target: self, action: #selector(donePickerViewButtonTapped(_:)))
  doneButton.setTitleTextAttributes([
    NSAttributedString.Key.font: UIFont.boldSystemFont(ofSize: 18)], for: .normal)

  toolBar.setItems([spaceButton, doneButton], animated: false)
  toolBar.isUserInteractionEnabled = true

  let textField = VoraTextField(leftPadding: globalPadding * 1.5, rightPadding: 0.0)
  textField.backgroundColor = UIColor(red: 240/255, green: 240/255, blue: 240/255, alpha: 0.9)

  textField.placeholder = option.name.capitalized

  let imageView = UIImageView(image: UIImage(named: "right-angle"))
  imageView.contentMode = .scaleAspectFit

  textField.rightView = imageView
  textField.rightViewMode = .always
  textField.font = UIFont.boldSystemFont(ofSize: 16)
  textField.textColor = .black
  textField.delegate = self

  textField.inputAccessoryView = toolBar

  let pickerView = UIPickerView()
  self.pickerViewArray.append(pickerView)
  pickerView.showsSelectionIndicator = true
  pickerView.backgroundColor = .white
  textField.inputView = pickerView
  textField.borderStyle = .roundedRect

  pickerView.delegate = self

1 Ответ

0 голосов
/ 01 мая 2019

Я не совсем уверен, что является причиной проблемы, но в качестве обходного пути попробуйте добавить сплошной цвет фона в текстовое поле.

UIColor(red: 240/255, green: 240/255, blue: 240/255, alpha: 1) // changed alpha to 1

Конечно, с этими значениями цвет будет намного темнее.

...