6

UIViewフォーカス可能にすることは可能ですか?UIButtonまたは、考えられるすべてのビューにカスタムを使用する必要がありますか?

オーバーライドしようとしましたがcanBecomeFocused、何も起こりませんでした。

4

3 に答える 3

17

問題は、自分のセルがフォーカスされていることに気付かなかったことです。これをまとめるには、実装する必要があります

1) canBecomeFocused をオーバーライドする

2) "didUpdateFocusInContext:withAnimationCoordinator:" メソッドをオーバーライドして、フォーカスされたセルを強調表示できるようにします。

スウィフト 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)
    }
}

スウィフト 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)
    }
}
于 2015-10-12T18:16:11.083 に答える