将目标添加到UIButton不起作用

时间:2016-11-07 18:27:47

标签: ios swift uibutton swift3

我是iOS编程的新手,我正在关注Apple'开始开发'当然要了解iOS应用程序开发的工作原理。我正在为我的故事板添加一个视图。这个新视图包含一个我以编程方式创建的按钮。

应用布局,突出显示的部分是添加的视图。

App layout, highlighted part is the view

我试图为此按钮添加操作,但它只是无法正常工作。

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)
}

现在我运行应用程序时的屏幕:

running screen

单击红色方块不会在输出窗口中打印任何内容。我还在动作函数中添加了一个断点,但它永远不会中断。

1 个答案:

答案 0 :(得分:1)

问题在于评级控制没有宽度/高度限制。因此,在堆叠视图内,其宽度和高度减小到零。因此,按钮最终位于评级控制之外(因为后者的大小为零;一切都在它之外)。超级视图外的子视图是非交互式的。

只需给予评级控制一个宽度约束和一个高度约束,一切都会很好。

您可以通过暂时给予评级控件一些背景颜色来轻松检测到这一点。然后,您可以在运行应用程序时立即看到布局中缺少评级控件。