UIButton не отвечает на нажатие - PullRequest
0 голосов
/ 17 марта 2020

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

    let saveBtn = GActionBtn(type: .system)

    lazy var footer: UIView = {
        let v = UIView()
        v.isUserInteractionEnabled = true
        v.addSubview(saveBtn)
        saveBtn.isUserInteractionEnabled = true
        saveBtn.addTarget(self, action: #selector(handleSave), for: .touchUpInside)
        saveBtn.backgroundColor = #colorLiteral(red: 0.4470588235, green: 0.6274509804, blue: 0.3960784314, alpha: 1)
        saveBtn.layer.cornerRadius = 27.5
        let attributeString = NSAttributedString(string: "Save".localized(), attributes: [NSAttributedString.Key.font: UIFont(name: "NunitoSans-Bold", size: 16), NSAttributedString.Key.foregroundColor: UIColor.white])
        saveBtn.setAttributedTitle(attributeString, for: .normal)
        NSLayoutConstraint.activate([
            saveBtn.centerXAnchor.constraint(equalTo: v.centerXAnchor),
            saveBtn.centerYAnchor.constraint(equalTo: v.centerYAnchor, constant: 54),
            saveBtn.widthAnchor.constraint(equalToConstant: 312),
            saveBtn.heightAnchor.constraint(equalToConstant: 52)
        ])
        return v
    }()

    @objc private func handleSave() {
        print("save")
    }

    private func setupTableView() {
        tableView = UITableView(frame: .zero, style: .grouped)
        tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 80, right: 0)
        tableView.separatorStyle = .none
        tableView.keyboardDismissMode = .interactive
        tableView.backgroundColor = .white
        tableView.tableFooterView = footer
    }

1 Ответ

1 голос
/ 17 марта 2020

@ ferryawijayanto В соответствии с предложением Sh_Khan, да, вы должны вернуть UIButton непосредственно в tableFooterView. Это примет это. Попробуйте, как показано ниже:

 private func setupTableView() {
    tableView = UITableView(frame: .zero, style: .grouped)
    tableView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 80, right: 0)
    tableView.separatorStyle = .none
    tableView.keyboardDismissMode = .interactive
    tableView.backgroundColor = .white

    let saveBtn = UIButton (type: .system)
    saveBtn.isUserInteractionEnabled = true
    saveBtn.addTarget(self, action: #selector(handleSave), for: .touchUpInside)
    saveBtn.backgroundColor = #colorLiteral(red: 0.4470588235, green: 0.6274509804, blue: 0.3960784314, alpha: 1)
    saveBtn.layer.cornerRadius = 27.5
    let attributeString = NSAttributedString(string: "Save".localized(), attributes: [NSAttributedString.Key.font: UIFont(name: "NunitoSans-Bold", size: 16), NSAttributedString.Key.foregroundColor: UIColor.white])
    saveBtn.setAttributedTitle(attributeString, for: .normal)


    tableView.tableFooterView = saveBtn
}

Если вы хотите указать полную ширину и высоту, которые определяют heightForFooterSection, значит UIButton автоматически обновляется со своим кадром из кадра нижнего колонтитула. В противном случае вы хотите настроить с помощью stati c ширины и высоты, вы можете использовать рамку без ограничений. Конечно, вы должны попробовать и с ограничениями.

Я надеюсь, что это поможет достичь желаемого результата.

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