2017-01-19 3 views
0

У меня есть странная ошибка, когда кнопки touchUpInside не работают должным образом. У меня есть две кнопки, используя один и тот же кодБыстрая кнопка работает неправильно?

@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]) 

Однако кнопка previous работает только тогда, когда я тащу после нажатия. в отличие от кнопки next, которая работает просто нажатием. Почему я получаю это странное поведение в этой одной кнопке?

Я хотел бы добавить .touchDragOutside к моей предыдущей кнопке, но я не могу, потому что тогда кнопка не работает

ответ

0

Если бы я тебя, я бы начать с удалением @IBAction на свои функции.
Насколько я могу судить, они бесполезны, поскольку вы устанавливаете действия через «addTarget». И есть вероятность, что ваше странное поведение вызвано неправильным соединением между вашими кнопками и функциями (выберите ваши кнопки и откройте «Инспектор подключений», чтобы проверить, все ли в порядке).

Еще одна возможность состоит в том, что ваши кнопки накладываются друг на друга или какой-либо вид блокирует вашу кнопку.

Кроме того, таймеры могут быть сложными, взгляните на это сообщение для их запуска и остановки: swift invalidate timer doesn't work

Смежные вопросы