Как сделать так, чтобы UIBarButton не поседел при отключении?


У меня есть UIBarButton saveBarButton, чтобы сохранить изображение экрана на пленку камеры. Когда пользователь нажимает кнопку saveBarButton, изображение сохраняется, и UIBarButton saveBarButton изменяется на UIImage doneIconв течение 1,2 секунды, чтобы указать пользователю, что изображение было сохранено. Когда saveBarButton отображает doneIcon, я отключаю saveBarButton. Однако, когда я это делаю, saveBarButton становится серым.

Мой вопрос: как я могу остановить UIBarButton от поседения, когда он отключен?

Мой код:

//create UIBarButton saveBarButton
override func viewDidLoad() {    
    let saveBarButton = UIBarButtonItem(image: UIImage(named: "saveIcon"), style: .Plain, target: self, action: "save:")
    saveBarButton.tintColor = colorGreyDark
}

//save function called when press saveBarButton
func save(sender: UIBarButtonItem) {
    //save image
    deselectShape()
    let window: UIWindow! = UIApplication.sharedApplication().keyWindow
    let windowImage = capture(window)
    UIImageWriteToSavedPhotosAlbum(windowImage
        , nil, nil, nil)

    //Change saveBarButton to indicate to user that image was saved 
    sender.image = UIImage(named: "doneIcon")
    sender.enabled = false //disable saveBarButton
    self.performSelector("canSaveAgain:", withObject: sender, afterDelay: 1.2)
}

//Change saveBarButton to original icon to indicate to user that can save another image
func canSaveAgain(sender: UIBarButtonItem){
    sender.image = UIImage(named: "saveIcon")
    sender.enabled = true //enable saveBarButton
}

Чтобы понять, о чем я говорю. о.

1 2

1 ответ:

Одним из способов является создание UIBarButtonItem с customView и использовать userInteractionEnabled вместо enabled.

let saveBarButton = UIBarButtonItem(customView: saveButton)
saveBarButton.customView?.userInteractionEnabled = false