内部にいくつかの UIButton を含むカスタム入力ビューを作成しました。これらのボタンはすべて、1 つの IBAction を呼び出します。
IBAction は呼び出されませんが、IB で適切に設定したことは 100% 確信しています。これが問題の原因ではないことを証明するために、プログラムでボタンの 1 つにターゲットを追加しましたが、アクションはまだ呼び出されません。
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)
}
}
私はまだデリゲートを適切に実装していませんが、それは重要ではありません。print("buttonTapped") も表示されません。メソッドが呼び出されないだけです。ブレークポイントを使用してこれをテストしました。
この問題の原因を知っている人はいますか