Ошибка с UITextField внутри UITableViewCell - PullRequest
0 голосов
/ 13 декабря 2018

У меня проблема с некоторым TextField внутри UITableViewCell;у меня есть два текстовых поля внутри ячейки таблицы, когда я нажимаю на textField, все работает отлично, как вы можете видеть на этих двух скриншотах

1.

Число в красных квадратах - это мое UITextField, когда я нажимаю на один из них, оно отлично работает

Но когда я нажимаю на другое текстовое поле, вся ячейка исчезает, как это

У меня появляется свободное место после нажатия на другое текстовое поле

У меня нет реализованной функции, только функция, которая изменяет шрифт и textColor

func setPickers() {
    self.hourPicker.delegate = self
    self.minutePicker.delegate = self

    hourPicker.textColor = theme.grey
    minutePicker.textColor = theme.grey
    hourPicker.background = UIImage()
    minutePicker.background = UIImage()
    hourPicker.textAlignment = .center
    minutePicker.textAlignment = .center
    hourPicker.font = UIFont(name: "Roboto-Regular", size: 48)
    minutePicker.font = UIFont(name: "Roboto-Regular", size: 48)
}

Эта ячейка в моей раскадровке

РЕДАКТИРОВАТЬ 2 Посмотрите мою графическую отладку, которая показывает до ошибки

И после нее

Ячейка называется EventDetailFooterTableViewCell

РЕДАКТИРОВАТЬ 3 Здесь я инициализирую cellView для нижнего колонтитула

func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let cell = tableView.dequeueReusableCell(withIdentifier: "footerCell") as! EventDetailFooterTableViewCell

    cell.event = self.event
    cell.delegate = self
    cell.setView()

    cell.backgroundColor = theme.mainColor

    return cell
}

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {

    var height: CGFloat = 180.0

    var calendar = NSCalendar.current
    calendar.timeZone = TimeZone(abbreviation: "UTC")! //OR NSTimeZone.localTimeZone()
    let dateAtMidnight = calendar.startOfDay(for: Date())
    let todayLong = dateAtMidnight.millisecondsSince1970
    if let eventDay = event.dateTime?.millisecondsSince1970 {

        if eventDay >= todayLong {
            height = 280
        }
    }

    return height
}

1 Ответ

0 голосов
/ 13 декабря 2018

Я вижу проблему.Вы используете обычную ячейку в качестве нижнего колонтитула раздела, и поэтому вы видите непредсказуемое поведение.Вместо этого вы должны использовать UITableViewHeaderFooterView.Это если вам действительно нужен такой дизайн.Лучшим решением будет удалить нижний колонтитул и сделать его ячейкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...