2017-01-19 13 views
0

ボタンtouchUpInsideが正常に動作しない不思議なバグがあります。私はタップした後にドラッグするとpreviousボタンのみ動作しますが、同じコードスウィフトボタンが正しく機能していませんか?

@IBOutlet weak var previousIBO: UIButton! 
@IBOutlet weak var nextIBO: UIButton! 

@IBAction func buttonDown(sender: AnyObject) { 
    nextSingleFire() 
    timer = Timer.scheduledTimer(timeInterval: 0.2, target: self, selector:#selector(nextFire), userInfo: nil, repeats: true) 
} 
@IBAction func buttonUp(sender: AnyObject) { 
    timer.invalidate() 
} 

nextIBO.addTarget(self, action:#selector(buttonDown(sender:)), for: .touchDown) 
    nextIBO.addTarget(self, action:#selector(buttonUp(sender:)), for: [.touchUpInside, .touchUpOutside, .touchDragOutside]) 
    previousIBO.addTarget(self, action:#selector(buttonDown(sender:)), for: .touchDown) 
    previousIBO.addTarget(self, action:#selector(buttonUp(sender:)), for: [.touchUpInside, .touchUpOutside]) 

を使用して2つのボタンがあります。単にタップするだけで動作するnextボタンとは対照的です。なぜ私はこの1つのボタンでこの奇妙な動作を取得していますか?

は、私は私の前のボタンに.touchDragOutsideを追加したいと思いますが、私はあなただったら、私はあなたの機能に@IBActionを除去することにより、起動したい

答えて

0

私は、ボタンが動作しないことができないので。
"addTarget"でアクションを設定しているので、私が知る限り、それらは無用です。あなたのボタンと関数の間の接続が間違っているために奇妙な動作が起こる可能性があります(ボタンを選択し、「接続インスペクタ」を開いてすべてが問題ないかどうかを確認してください)。

ボタンが重なっているか、一部のビューがボタンをブロックしている可能性があります。

また、タイマーは難しい場合があります。開始と停止についてこの投稿をご覧ください。swift invalidate timer doesn't work

関連する問題