我创建了一个自定义输入视图,里面有几个UIButtons。所有这些按钮都会调用一个IBAction。
虽然我100%确定我在IB中正确设置了它,但是没有调用IBAction。为了证明这不会导致问题,我以编程方式向其中一个按钮添加了一个目标,但仍然无法调用该操作。
import UIKit
protocol CashDeskInputDelegate: class {
func didReceiveInput(inputValue: String)
func didReceiveDoneMessage()
}
class CashDeskInputViewController: UIInputViewController {
// Delegate
weak var delegate: CashDeskInputDelegate?
// Actions
@IBAction func buttonTapped(sender: UIButton) {
print("buttonTapped")
guard let valueOfSender = sender.titleLabel?.text else {
dismissKeyboard()
return
}
valueOfSender == "Done" ? delegate?.didReceiveDoneMessage() : delegate?.didReceiveInput(valueOfSender)
}
// Test outlet
@IBOutlet weak var firstButton: UIButton!
override func viewDidLoad() {
// Add an action to the first button for testing purposes.
firstButton.addTarget(self, action: "buttonTapped:", forControlEvents: .TouchUpInside)
}
}
我还没有正确实现委托,但这不是重点。打印(“buttonTapped”)甚至不会出现。该方法不会被调用,我使用断点进行了测试。
有谁知道造成这个问题的原因