我是 iOS 编程新手,正在学习 Apple 的“开始开发”类(class),以了解 iOS 应用程序开发的工作原理。我正在向 Storyboard添加 View 。这个新 View 包含一个我以编程方式创建的按钮。
应用布局,突出显示的部分是添加的 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)
}
现在是我运行应用程序时的屏幕:
单击红色方 block 不会在输出窗口中打印任何内容。我还在操作函数中添加了一个断点,但它永远不会中断。
最佳答案
问题是评级控件没有宽度/高度限制。因此,在堆栈 View 内部,其宽度和高度减小为零。因此,按钮最终位于评级控制之外(因为后者的大小为零;所有内容都在其外部)。其父 View 之外的 subview 是非交互式的。
只需给评级控件一个宽度约束和高度约束,一切都会好起来的。
您可以通过暂时为评级控件提供一些背景颜色来轻松检测到这一点。然后,在运行应用程序时,您会立即看到布局中缺少评级控件。
关于ios - 将目标添加到 UIButton 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472033/