Quindi il problema era che non mi ero accorto che la mia cella si era concentrata. Per concludere questa funzione, è necessario implementare
1) Azionamento canBecomeFocused
2) override "didUpdateFocusInContext: withAnimationCoordinator:" metodo per essere in grado di evidenziare la cella più concentrati
Swift 2.3:
override func canBecomeFocused() -> Bool {
return true
}
override func didUpdateFocusInContext(context: UIFocusUpdateContext, withAnimationCoordinator coordinator: UIFocusAnimationCoordinator) {
if context.nextFocusedView == self {
coordinator.addCoordinatedAnimations({() -> Void in
self.layer.backgroundColor = UIColor.blueColor().colorWithAlphaComponent(0.2).CGColor
}, completion: nil)
} else if context.previouslyFocusedView == self {
coordinator.addCoordinatedAnimations({() -> Void in
self.layer.backgroundColor = UIColor.clearColor().CGColor
}, completion: nil)
}
}
Swift 3:
override var canBecomeFocused: Bool {
return true
}
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) {
if context.nextFocusedView == self {
coordinator.addCoordinatedAnimations({() -> Void in
self.layer.backgroundColor = UIColor.blue.withAlphaComponent(0.2).cgColor
}, completion: nil)
} else if context.previouslyFocusedView == self {
coordinator.addCoordinatedAnimations({() -> Void in
self.layer.backgroundColor = UIColor.clear.cgColor
}, completion: nil)
}
}
fonte
2015-10-12 18:16:11
sì, qualsiasi UIView è focalizzabile usando canBecomeFocused. Tuttavia, è necessario sovrascrivere il metodo didUpdateFocusInContext per visualizzare lo stato attivo. –