xcode 8.1/swift 3に問題があります。デバッガXCodeソフトウェアのバグかもしれませんが、行方不明私はUITextFieldで使用されるバックスペースメソッドをオーバーライドする必要があるiosアプリケーションで作業しています。バックスペースキーが押されているのを見るためにデリゲートをセットアップしました。このプログラムは、オーバーライドされたメソッドでデバッガブレークポイントを設定するまで機能します(下記のコードを参照)。私がこれを行うと、バックスペースメソッドは、キーを1回押すのではなく、2回押すごとに2回呼び出されます。ブレークポイントを削除すると、コードが機能します。これは単なるバグですか、何か間違っていますか?あなたの助けのためにコードありがとうございます!ここでデバッガのブレークポイントを持つXcode 8.1/Swift 3.0でdelegateメソッドが2回呼び出されました
import UIKit
class ViewController: UIViewController, EqFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
let newField = EqField()
newField.myDelegate = self
newField.becomeFirstResponder()
view.addSubview(newField)
newField.frame = CGRect(x: 50, y: 50, width: 200, height: 150)
}
func backspacePressed(){
print("in backspacePressed") // breakpoint added here
}
}
はUITextFieldののサブクラスである:
import UIKit
class EqField: UITextField {
var myDelegate: EqFieldDelegate?
override func deleteBackward() {
super.deleteBackward()
myDelegate?.backspacePressed()
}
}
protocol EqFieldDelegate {
func backspacePressed()
}
あなたはそれが2回呼び出されていると思いますか?ブレークポイントにヒットしてもヒットし続けると、再びヒットします。それとも具体的には? – TheValyreanGroup
私は提供されたコードでテストプロジェクトを作成し、検証することができます。ブレークポイントに2回ヒットするだけでなく、ログも2回印刷されます。ブレークポイントがなければ、ログは1回印刷されます。 – charmingToad
XCodeデバッガで発生することがあります。 UI要素とその代理人を操作すると、デバッガが誤動作することがあります。 –