Это очень странная проблема, которую мне не удалось решить.У меня есть UICollectionViewCell
, названный DownloadUrlCell
с некоторыми свойствами следующим образом:
class DownloadUrlCell: UICollectionViewCell {
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .gray
setupCellView()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
//MARK: properties
let container: UIView = {
let vi = UIView()
vi.translatesAutoresizingMaskIntoConstraints = false
vi.backgroundColor = .white
vi.layer.cornerRadius = 5.0
vi.addShadowToSelf()
return vi
}()
let urlInputTF: UITextField = {
let tf = UITextField()
tf.translatesAutoresizingMaskIntoConstraints = false
tf.borderStyle = .roundedRect
tf.textColor = .black
tf.font = UIFont.systemFont(ofSize: 13)
return tf
}()
//MARK: setup methods
func setupCellView() {
setupContainer()
addUrlTFAndBtn()
}
func setupContainer() {
self.addSubview(container)
container.topAnchor.constraint(equalTo: self.topAnchor, constant: 10).isActive = true
container.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -10).isActive = true
container.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 5).isActive = true
container.trailingAnchor.constraint(equalTo: self.trailingAnchor, constant: -5).isActive = true
}
func addUrlTFAndBtn() {
//urlInputTF.delegate = self
container.addSubview(urlInputTF)
urlInputTF.topAnchor.constraint(equalTo: container.topAnchor, constant: 0).isActive = true
urlInputTF.leadingAnchor.constraint(equalTo: container.leadingAnchor, constant: 0).isActive = true
urlInputTF.trailingAnchor.constraint(equalTo: container.leadingAnchor, constant: 0).isActive = true
urlInputTF.heightAnchor.constraint(equalToConstant: 40).isActive = true
}
}
В UICollectionViewCell
(DownloadUrlCell
) есть контейнер, в котором есть UITextField
, и что всекод этой ячейки, ничего больше.
Теперь, когда я нажимаю на текстовое поле, вид смещается вверх на высоту клавиатуры. Я не добавил ни одного кода для смены вида .Я понятия не имею, почему это происходит, и не смог найти подобные вопросы в стеке или где-либо еще Я не использовал сторонние библиотеки .
Edit1 : Хорошо, я загрузил демонстрационный проект с той же проблемой.Текстовое поле находится в третьей ячейке (названной: DownloadUrlCell).Ниже приведена ссылка на проект github:
https://github.com/AfnanAhmadiOSDev/VDProjectDemo.git
Edit2 : Итак, попробовав несколько других вещей, я пришел к выводу, что проблема существуеттолько в UICollectionViewCell
.Если я добавлю текстовое поле в любое UIViewController
, оно будет работать без проблем, но если я добавлю текстовое поле внутри UICollectionViewCell
, а затем коснусь текстового поля, вид сместится вверх.
Ниже приведен простой проект сUICollectionViewController
и простая ячейка.Ничего другого в проекте, но проблема все еще остается.
https://github.com/AfnanAhmadiOSDev/VDSimpleDemo
Edit3 : Так что, покопавшись, я нашел этот ответ, который действительно помог.Однако причина остается неясной.
Решение: https://stackoverflow.com/a/51980844/10758374