класс добавлен динамически, не отвечает, тронут в быстром - PullRequest
0 голосов
/ 16 октября 2019

Я объявляю TestClass, содержащий button и textField, и ограничиваю его, а затем добавляю этот класс для просмотра контроллера

import Foundation
import UIKit

class TestClass : UIView {

    let testButton : UIButton = {
        let button = UIButton()
        button.setTitle("Test", for: .normal)
        button.setTitleColor(.red ,for:.normal)
        return button
    }()

    let testInput : UITextField = {
        let input = UITextField()
        input.placeholder = "type here"
        return input
    }()


    override init(frame: CGRect) {
        super.init(frame: frame)
        setupView()
    }

    func setupView(){

        addSubview(testButton)
        addSubview(testInput)

        testButton.translatesAutoresizingMaskIntoConstraints = false
        testInput.translatesAutoresizingMaskIntoConstraints  = false

        testButton.topAnchor.constraint(equalTo: self.topAnchor, constant: 20).isActive = true
        testButton.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 20).isActive = true
        testButton.heightAnchor.constraint(equalToConstant: 30).isActive = true
        testButton.widthAnchor.constraint(equalToConstant: 50).isActive = true

        testInput.topAnchor.constraint(equalTo: self.topAnchor, constant: 70).isActive = true
        testInput.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: 20).isActive = true
        testInput.heightAnchor.constraint(equalToConstant: 30).isActive = true
        testInput.widthAnchor.constraint(equalToConstant: 100).isActive = true

    }



    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }


}

в viewDidLoad Я добавляю этот класс, и он появляется. но когда я нажимаю на textField или кнопку, он не реагирует

class ViewControll : UIViewController {

    let newClass : TestClass = {
        let view = TestClass()
        return view
    }()

    override func viewDidLoad() {
        super.viewDidLoad()
        view.addSubview(newClass)
        newClass.frame.size = CGSize(width: 200, height: 200)
        newClass.translatesAutoresizingMaskIntoConstraints = false
        newClass.topAnchor.constraint(equalTo: contView.topAnchor, constant: 300).isActive = true
        newClass.leadingAnchor.constraint(equalTo: contView.leadingAnchor, constant: 30).isActive = true
        newClass.testButton.addTarget(self, action: #selector(prnt), for: .touchUpInside)

    }
    @objc func prnt(){
        print("bla bla bla")
    }
}

, когда я нажимаю на кнопку или нажимаю на textField, ничего не происходит, может кто-нибудь помочь мне, пожалуйста

1 Ответ

0 голосов
/ 16 октября 2019

Ограничения не определяют высоту и ширину вашего TestClass - заданный фрейм не работает. Для этого также необходимо добавить ограничения, например, в методе viewDidLoad:

newClass.heightAnchor.constraint(equalToConstant: 200).isActive = true
newClass.widthAnchor.constraint(equalToConstant: 200).isActive = true
...