Пользовательская ячейка TableView не активна - PullRequest
0 голосов
/ 09 апреля 2020

Я создал настраиваемую ячейку таблицы, создав для нее отдельный класс. Код работает нормально, за исключением того, что, если я коснусь метки в ячейке, ячейка не зарегистрирует, что она была выбрана. Однако, когда изображение в ячейке постукивает, ячейка регистрирует его совершенно нормально. Я включил реализацию класса ячейки ниже. Буду очень признателен, если кто-нибудь сможет мне помочь.

class ItemCustomCell: UITableViewCell {

    var message: String?
    var itemImage: UIImage?

    var messageView: UITextView = {
        var text = UITextView()
        return text
    }()

    var itemImageView: UIImageView = {
        var itemImage = UIImageView()
        return itemImage
    }()
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)

        self.addSubview(messageView)
        self.addSubview(itemImageView)

        itemImageView.translatesAutoresizingMaskIntoConstraints = false
        itemImageView.topAnchor.constraint(equalTo: self.topAnchor, constant: 10).isActive = true
        itemImageView.bottomAnchor.constraint(equalTo: self.bottomAnchor, constant: -10).isActive = true
        itemImageView.widthAnchor.constraint(equalTo: self.heightAnchor).isActive = true
        itemImageView.leftAnchor.constraint(equalTo: self.leftAnchor, constant: 10).isActive = true

        messageView.translatesAutoresizingMaskIntoConstraints = false
        messageView.leftAnchor.constraint(equalTo: self.itemImageView.rightAnchor, constant: 25).isActive = true
        messageView.rightAnchor.constraint(equalTo: self.rightAnchor, constant: 20).isActive = true
        messageView.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
        let fixedWidth = messageView.frame.size.width - 50
        let newSize = messageView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude))
        messageView.heightAnchor.constraint(equalToConstant: newSize.height).isActive = true
    }

    override func layoutSubviews() {
        super.layoutSubviews()
        if let message = message {
            messageView.text = message
            messageView.font = UIFont(name: messageView.font!.fontName, size: 15)
            messageView.isEditable = false
            messageView.isScrollEnabled = false
        }
        if let image = itemImage {
            itemImageView.image = image
        }
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

1 Ответ

2 голосов
/ 09 апреля 2020

Поскольку вы используете UIextView для своей метки, а не UILabel, ваше текстовое представление ловит касания раньше, чем ячейка. Установите messageView.isUserInteractionEnabled = false, чтобы избежать этого поведения.

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