我是iOS编程的新手,我正在关注Apple'开始开发'当然要了解iOS应用程序开发的工作原理。我正在为我的故事板添加一个视图。这个新视图包含一个我以编程方式创建的按钮。
应用布局,突出显示的部分是添加的视图。
我试图为此按钮添加操作,但它只是无法正常工作。
RatingControl.swift
中的代码:
// MARK: Button Action
func ratingButtonTapped(button: UIButton) {
print("Button pressed")
}
// MARK: Initialization
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
let button = UIButton(type: .system)
button.frame = CGRect(x: 0, y: 0, width: 44, height: 44)
button.backgroundColor = UIColor.red
button.addTarget(self, action: #selector(RatingControl.ratingButtonTapped(button:)), for: .touchUpInside)
addSubview(button)
}
现在我运行应用程序时的屏幕:
单击红色方块不会在输出窗口中打印任何内容。我还在动作函数中添加了一个断点,但它永远不会中断。
答案 0 :(得分:1)
问题在于评级控制没有宽度/高度限制。因此,在堆叠视图内,其宽度和高度减小到零。因此,按钮最终位于评级控制之外(因为后者的大小为零;一切都在它之外)。超级视图外的子视图是非交互式的。
只需给予评级控制一个宽度约束和一个高度约束,一切都会很好。
您可以通过暂时给予评级控件一些背景颜色来轻松检测到这一点。然后,您可以在运行应用程序时立即看到布局中缺少评级控件。