Я делаю приложение, в котором двигаются две кнопки. Первый перемещается сразу, а второй перемещается через 1 секунду. Что происходит сейчас в моем приложении, так это то, что когда я нажимаю кнопку «Пуск» до истечения одной секунды, он показывает, что две из вторых кнопок движутся. Я считаю, что мне нужно будет сделать так, чтобы при нажатии кнопки мне пришлось отменить dispatch_after
, но когда я пытаюсь сделать это, написав этот код:
let time1 = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW),1 * Int64(NSEC_PER_SEC))
dispatch_after(time1, dispatch_get_main_queue()) {
// code of second button moving
}
if time1 == true
{time1 = false}
он говорит, что я не могу назначить это dispatch_time
. Что я должен делать? Это полный код, если это поможет вам:
@IBAction func startbutton(sender: UIButton) {
// code for moving the first button
let time1 = dispatch_time(dispatch_time_t(DISPATCH_TIME_NOW),1 * Int64(NSEC_PER_SEC))
dispatch_after(time1, dispatch_get_main_queue()) {
// code of second button moving
}
if time1 == true
{time1 = false}
}
dispatch_time
не является логическим значением, поэтому вы не можете сравнить его сtrue
илиfalse
или присвоить ему эти значения. Возможно, что более важно, как вы анимируете эти кнопки? Анимации UIKit обычно не требуют вызовов GCD. - person Tom Harrington   schedule 17.12.2015