2015-12-31 3 views
0

У меня вопрос о инвертировании цветов uibutton. Я пытаюсь изменить цвет текста и цвет фона; однако, когда пользователь пытается надавить на него очень быстро, цвета перестают инвертировать. Я считаю, что это проблема параллелизма. Я пробовал использовать блокировки и рабочие очереди. У кого-нибудь есть предложения?Проблема параллелизма с инвертией UIButton

Heres мой код

func invertStartButton(){ 
    let currentBackGroundColor:UIColor? = self.startButton.backgroundColor 
    print(currentBackGroundColor) 
    objc_sync_enter(currentBackGroundColor) 
    defer{ 
     objc_sync_exit(currentBackGroundColor) 
    } 
    self.startButton.backgroundColor = self.startButton.titleLabel?.textColor 
    print(self.startButton.backgroundColor) 

    self.startButton.setTitleColor(currentBackGroundColor, forState: UIControlState.Normal) 
} 

ответ

0

Самым простым решением является отключить кнопку во время изменения:

@IBAction func invertButton(sender: UIButton) { 
    sender.enabled = false 
    // invert 
    sender.enabled = true 
} 
+0

Я пробовал это решение, но, похоже, все тот же результат – matt

+0

Это практически невозможно. – Mundi

+0

У этого есть что-то, чтобы сделать эту линию, пусть currentBackGroundColor: UIColor? = self.startButton.backgroundColor, поэтому я решил просто жестко закодировать цвета и иметь значения bool, чтобы исправить инвертирование. Этот ответ не сработал, потому что это была не проблема с кнопкой, а проблема с настройкой цвета – matt

0

Проблема была связана с переменной экземпляра. Итак, чтобы исправить это, я использовал два жестко закодированных кода с величиной bool для переключения

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