ios - 将目标添加到 UIButton 不起作用

标签 ios swift uibutton swift3

我是 iOS 编程新手,正在学习 Apple 的“开始开发”类(class),以了解 iOS 应用程序开发的工作原理。我正在向 Storyboard添加 View 。这个新 View 包含一个我以编程方式创建的按钮。

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

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

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

最佳答案

问题是评级控件没有宽度/高度限制。因此,在堆栈 View 内部,其宽度和高度减小为零。因此,按钮最终位于评级控制之外(因为后者的大小为零;所有内容都在其外部)。其父 View 之外的 subview 是非交互式的。

只需给评级控件一个宽度约束和高度约束,一切都会好起来的。

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

关于ios - 将目标添加到 UIButton 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40472033/

相关文章:

ios - ARC 异步 block 最佳实践

ios - 如何使用不可重用的表格 View 单元格?

ios - 将 CKServerChangeToken 保存到核心数据

ios - Mixpanel iOS - 如何 MPTweakBind UIButton 文本?

android - "config.h file not found"怎么解决?从设备上的 native react 运行应用程序时?

iphone - 拖动注解 View 导致多次触发拖动状态委托(delegate)方法

ios - 使用gdal2tiles将图像转换为maptiles

ios - 来自服务器的数据库中的 Realm 更新结果

ios - 将 UIButton 添加到工具栏 swift 5

objective-c - UIButton 在选择时拉伸(stretch)图像