在 Xcode 12 上运行应用程序时按钮不起作用 [重复]

Posted

技术标签:

【中文标题】在 Xcode 12 上运行应用程序时按钮不起作用 [重复]【英文标题】:Buttons not working when running app on Xcode 12 [duplicate] 【发布时间】:2020-09-28 23:31:58 【问题描述】:

我使用的是版本 12.0.1 (12A7300)。我在 UIViews 上有一些按钮,在 UITableViewCells 中有一些按钮。表格单元格内按钮的操作位于我使用协议访问的父视图控制器中。在模拟器或我的设备上运行应用程序时。所有按钮都是以编程方式添加的。按钮不起作用。我重新安装了 Xcode 版本 11.7 (11E801a),一切正常。

有什么办法可以解决这个问题?这是一个错误还是发生了一些变化而我不知道?

这是我的代码示例。在 UITableViewCell 中:

var addToCartDelegate: AddToCartDelegate?

let addToCartButton: UIButton = 
    let button = UIButton()
    return button
()

let applePayButton: PKPaymentButton = 
    let button = PKPaymentButton(paymentButtonType: .buy, paymentButtonStyle: .whiteOutline)
    return button
()

func configureAddToCartButton() 
    let button = addToCartButton
    button.setTitle("Add To Cart", for: .normal)
    button.titleLabel?.font = getScaledFont(forFont: Fonts.bold, textStyle: .body)
    button.setTitleColor(Colors.primaryButtonTintColor, for: .normal)
    button.tintColor = Colors.primaryButtonTintColor
    button.backgroundColor = Colors.primaryButtonBackgroundColor
    button.layer.cornerRadius = Attributes.cornerRadius
    button.addTarget(self, action: #selector(addToCartButtonWasTapped), for: .touchUpInside)


func configureStackView() 
    
    var stackView = UIStackView()
    
    if useApplePay 
        stackView = UIStackView(arrangedSubviews: [addToCartButton, applePayButton])
     else 
        stackView = UIStackView(arrangedSubviews: [addToCartButton])
    
    
    stackView.axis = .horizontal
    stackView.spacing = 16
    stackView.distribution = .fillEqually
    addSubview(stackView)
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.centerYAnchor.constraint(equalTo: centerYAnchor).isActive = true
    stackView.heightAnchor.constraint(equalToConstant: 44).isActive = true
    stackView.rightAnchor.constraint(equalTo: rightAnchor, constant: -16).isActive = true
    stackView.leftAnchor.constraint(equalTo: leftAnchor, constant: 16).isActive = true


@objc func addToCartButtonWasTapped() 
    addToCartDelegate?.addItemToCart()


@objc func applePayButtonWasTapped() 
    addToCartDelegate?.buyWithApplePay()

【问题讨论】:

刚刚测试了 Xcode 12 的新副本。按钮仍然不起作用。使用 Xcode 11.7 时一切正常。我会等到 Xcode 12 的几个更新发布。 如何将按钮添加到表格单元格? addSubviewcontentView.addSubview? 对于这个特定的按钮,我有一个表格视图标题tableView.tableHeaderView = tableViewHeader,我使用 addSubView 添加按钮,如tableViewHeader.addSubview(editProfileButton)。我正在添加到 stackview 中的其他按钮,并且我再次使用 addSubView 将 StackView 添加到 tableviewcell。我没有想到使用 contentView 添加它们。我会试试看是否有效。 【参考方案1】:

您不应该直接将内容添加到单元格的视图中。相反,应该使用contentView.addSubview() 将内容添加到单元格的contentView。在 ios 14 中,单元格的 contentView 出现在上方直接添加到单元格的内容中。这实际上将禁止用户与这些项目进行交互,因为contentView 将吸收所有交互。见下图:

在 iOS 14 之前,请注意添加到单元格的所有视图后面的 contentView

iOS 14 及更高版本,注意contentView 位于所有直接添加到单元格的视图前面

【讨论】:

问题原来是关于标题视图,而不是单元格。你的猜测肯定是对的,但你应该说的是 UITableViewHeaderFooterView,而不是 UITableViewCell。 问题状态 - “表格单元格内按钮的操作位于我使用协议访问的父视图控制器中。”提供的示例代码来自标题......也许可以编辑问题措辞或提供的代码?无论哪种方式,对我和 GIJoeCodes 来说都是很好的学习机会。 我编辑了提供的代码,因为它是错误的代码。虽然我“WAS”在这两个元素上都有问题,但我最初应该添加显示的代码。【参考方案2】:

按钮是否可见?

确保您使用了 configureEditProfileButton() 函数并将“editProfileButton”添加到主视图。

【讨论】:

按钮是可见的,正如我所提到的,一切都在 Xcode 11 中运行。我删除了 Xcode 12,我正在重新安装它。也许新版本可以正常工作。

以上是关于在 Xcode 12 上运行应用程序时按钮不起作用 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

UIButtons 在某些设备上不起作用

当我的应用程序运行时,硬件音量按钮不起作用

TestFlight 音频流不起作用

Xcode 9 更新后 pushViewController 不起作用

从 xcode 推送通知运行应用程序时正在运行,但是在安装 ipa 时它不起作用

在 xcode 4 中编译时模态视图不起作用