首页 > 解决方案 > 以编程方式创建的 UISwitch 无响应

问题描述

我创建了一个表格,看起来就像您在屏幕截图中看到的那样。

这是代码:

lazy var contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)

    lazy var scrollView : UIScrollView = {
        let scrollView = UIScrollView(frame: view.bounds)
        scrollView.backgroundColor = .white
        scrollView.frame = self.view.bounds
        scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height * 200)
        scrollView.autoresizingMask = UIView.AutoresizingMask.flexibleHeight
        scrollView.bounces = true
        return scrollView
    }()

    lazy var containerView : UIView = {
        let view = UIView()
        view.backgroundColor = .white
        view.frame.size = contentSize
        return view
    }()

    let weekStack = UIStackView()
            weekStack.axis = .vertical
            weekStack.distribution = .fillProportionally
            weekStack.spacing = 2
            containerView.addSubview(weekStack)
            weekStack.translatesAutoresizingMaskIntoConstraints = false
            weekStack.topAnchor.constraint(equalTo: restaurantImage.bottomAnchor, constant: 20).isActive = true
            weekStack.leadingAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.leadingAnchor, constant: 20).isActive = true
            weekStack.trailingAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.trailingAnchor, constant: -20).isActive = true
    let arrayOfDays = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
            for index in 0...arrayOfDays.count - 1 {
                let dayStack = UIStackView()
                weekStack.addArrangedSubview(dayStack)
                dayStack.axis = .horizontal
                dayStack.distribution = .fillEqually
                dayStack.spacing = 4

                let daySwitch = UISwitch(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
                dayStack.addArrangedSubview(daySwitch)

                let dayLabel = UILabel(frame: CGRect(x: 0, y: 0, width: 20, height: 0))
                dayLabel.text = arrayOfDays[index]
                dayLabel.textAlignment = .center
                dayLabel.font = UIFont(name: "NexaLight", size: 16)
                dayStack.addArrangedSubview(dayLabel)

                let startTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
                startTextField.placeholder = "Open"
                startTextField.textAlignment = .center
                startTextField.delegate = self
                startTextField.text = "9"
                startTextField.font = UIFont(name: "NexaLight", size: 16)
                dayStack.addArrangedSubview(startTextField)
                startTextField.inputView = timePicker
                startTextField.inputAccessoryView = toolbar

                let closeTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 0, height: 0))
                closeTextField.placeholder = "Close"
                closeTextField.textAlignment = .center
                closeTextField.text = "23"
                closeTextField.font = UIFont(name: "NexaLight", size: 16)
                closeTextField.delegate = self
                dayStack.addArrangedSubview(closeTextField)
                closeTextField.inputView = timePicker
                closeTextField.inputAccessoryView = toolbar
            }

问题是最后 2 个开关没有响应,如屏幕截图所示。我无法打开它们。我也无法与您看到“9”和“23”的最后两行文本字段进行交互。顺便说一下,这是来自模拟器。

在此处输入图像描述

标签: iosswiftuiswitch

解决方案


推荐阅读