私はカスタムのボタンを持っていますが、2つのターゲットも追加しました。テキストフィールドが空白の場合、1つのターゲットが動作しますが、テキストフィールドが空でない場合は、他のターゲットが動作します。しかし、両方のターゲットが同時に個々のボタンに作用しています。誰かが私を助けて、なぜ私に説明することができますか?1つのボタンの2つのターゲット
override func viewDidLoad() {
super.viewDidLoad()
FirstName.delegate = self
LastName.delegate = self
FirstName.addTarget(self, action:"edited", for:UIControlEvents.allEditingEvents)
LastName.addTarget(self, action:"edited", for:UIControlEvents.allEditingEvents)
// Do any additional setup after loading the view.
if FirstName.text?.isEmpty == true || LastName.text == "" {
ProgressButton.setImage(UIImage(named: "Skip"), for: .normal)
ProgressButton.contentEdgeInsets = UIEdgeInsetsMake(0,0,0,0)
ProgressButton.addTarget(self, action: #selector(Skip(_sender:)), for: UIControlEvents.touchUpInside)
} else {
ProgressButton.setImage(UIImage(named: "Right2"), for: .normal)
ProgressButton.contentEdgeInsets = UIEdgeInsetsMake(20,31,24,0)
ProgressButton.addTarget(self, action: #selector(Continue(_sender:)), for: UIControlEvents.touchUpInside)
}
}
func edited() {
if FirstName.text?.isEmpty == true || LastName.text == "" {
ProgressButton.setImage(UIImage(named: "Skip"), for: .normal)
ProgressButton.contentEdgeInsets = UIEdgeInsetsMake(0,0,0,0)
ProgressButton.addTarget(self, action: #selector(Skip(_sender:)), for: UIControlEvents.touchUpInside)
} else {
ProgressButton.setImage(UIImage(named: "Right2"), for: .normal)
ProgressButton.contentEdgeInsets = UIEdgeInsetsMake(20,31,24,0)
ProgressButton.addTarget(self, action: #selector(Continue(_sender:)), for: UIControlEvents.touchUpInside)
}
}
func Continue(_sender: ABProgressButton!) {
FirstName.resignFirstResponder()
LastName.resignFirstResponder()
// Delay the dismissal by 5 seconds
let delay = 0.85 * Double(NSEC_PER_SEC)
var time = DispatchTime.now() + Double(Int64(delay))/Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: time, execute: {
self.performSegue(withIdentifier: "ToViewController#2", sender: nil)
})
}
func Skip(_sender: ABProgressButton!) {
FirstName.resignFirstResponder()
LastName.resignFirstResponder()
self.performSegue(withIdentifier: "ToViewController#2", sender: nil)
}
この現象が発生するまでに 'edited()'が呼び出されましたか?そして、両方のメソッドが呼び出されたとあなたはどのように判断していますか? –
ボタンに1つの機能を割り当てるだけではなく、ユーザーがそのボタンをタップするとメイン関数が実行され、条件が満たされた場合に2つのサブ関数のどちらを呼び出すべきかを調べるとブール条件がチェックされます? – Zhang
大文字小文字を区別するための規約などを覗いてみてください。https://github.com/raywenderlich/swift-style-guideクラス、構造体、列挙体は大文字に変換され、メソッドや変数はcamelCase内にあります。 – Adrian